计算机二级C语言核心考点有哪些?

99ANYc3cd6
预计阅读时长 19 分钟
位置: 首页 C语言 正文

计算机二级C语言核心知识点总结

二级C语言考试主要分为两大块:公共基础知识(约占20%)和C语言程序设计(约占80%)。


第一部分:公共基础知识

通常以选择题的形式出现,考察对基本概念的理解。

数据结构与算法

  • 基本概念
    • 算法:五个基本特征(有穷性、确定性、可行性、输入、输出)。
    • 数据结构:数据的逻辑结构(线性结构、非线性结构)和物理结构(顺序存储、链式存储)。
  • 线性表
    • 定义:零个或多个数据元素的有限序列。
    • 顺序存储:一段连续的内存空间,通过下标随机访问,插入/删除需要移动大量元素。
    • 链式存储:通过指针链接,不要求连续内存空间,插入/删除效率高,但访问需要遍历。
  • 栈和队列
    • 后进先出,只允许在一端(栈顶)进行插入和删除操作。
    • 队列先进先出,允许在一端(队尾)插入,在另一端(队头)删除。
  • 树与二叉树
    • :一个无环的连通图,有根节点、父节点、子节点、叶子节点等概念。
    • 二叉树:每个节点最多有两个子节点(左子树、右子树)。
    • 遍历
      • 前序遍历:根 -> 左 -> 右
      • 中序遍历:左 -> 根 -> 右
      • 后序遍历:左 -> 右 -> 根
    • 满二叉树:所有节点都有0或2个子节点,且所有叶子都在同一层。
    • 完全二叉树:除最后一层外,其他层节点数都达到最大,且最后一层节点从左到右连续排列。
  • 查找
    • 顺序查找:从表头开始逐个比较,平均时间复杂度 O(n)。
    • 二分查找:要求数据有序,每次查找范围减半,平均时间复杂度 O(log n)。
  • 排序
    • 插入排序:将一个记录插入到已排好序的有序表中。
    • 选择排序:每次从未排序序列中找到最小(大)元素,放到已排序序列的末尾。
    • 冒泡排序:相邻元素比较,逆序则交换,每趟将最大(小)元素“冒泡”到末尾。
    • 快速排序:通过一趟排序将待排记录分割成独立的两部分,一部分比另一部分的所有关键字都小,然后对这两部分分别进行排序。

程序设计基础

  • 程序设计风格:清晰、可读性好。
  • 结构化程序设计:顺序、选择、循环三种基本结构,避免使用 goto 语句。

软件工程基础

  • 软件生命周期:定义、需求分析、设计、编码、测试、维护。
  • 软件开发模型:瀑布模型、螺旋模型、增量模型等。
  • 需求分析:形成需求规格说明书。
  • 软件设计:概要设计(模块结构图)、详细设计(伪代码、流程图)。
  • 软件测试
    • 目的:发现错误,证明程序有错。
    • 方法
      • 白盒测试:基于内部代码逻辑,覆盖路径(语句覆盖、判定覆盖、条件覆盖等)。
      • 黑盒测试:基于外部功能需求,不考虑内部代码(等价类划分法、边界值分析法)。
    • 测试阶段:单元测试、集成测试、确认测试、系统测试。

数据库设计基础

  • 数据库模型:概念模型(E-R图)、逻辑模型(关系模型)、物理模型。
  • 关系代数:选择(σ)、投影(π)、连接(⋈)等运算。
  • 数据库关系模型
    • 关系:一张二维表。
    • 元组:表中的一行。
    • 属性:表中的一列。
    • :唯一标识一个元组的属性或属性组。
    • 范式:规范化的程度,如第一范式(1NF)、第二范式(2NF)、第三范式(3NF)。

第二部分:C语言程序设计

这是考试的核心,包括选择题和操作题(编程题)。

C语言基本概念

  • 程序结构main 函数是程序的入口。
  • 标识符:由字母、数字、下划线组成,不能以数字开头,不能是关键字。
  • 关键字auto, break, case, char, const, continue, default, do, double, else, enum, extern, float, for, goto, if, int, long, register, return, short, signed, sizeof, static, struct, switch, typedef, union, unsigned, void, volatile, while
  • 常量与变量
    • 常量:整型、实型(浮点型)、字符型、字符串型、符号常量(#defineconst)。
    • 变量:先定义,后使用,数据类型决定内存占用和取值范围。
  • 基本数据类型
    • int: 整型
    • char: 字符型
    • float: 单精度浮点型
    • double: 双精度浮点型
    • long, short, signed, unsigned: 修饰符。

运算符与表达式

  • 算术运算符:, , , , (取模),注意 对于整数是整除, 只能用于整数。
  • 关系运算符>, <, >=, <=, , ,结果是逻辑值(真/假,在C语言中用1/0表示)。
  • 逻辑运算符&& (与), (或), (非),短路特性:a && b a 为假,则 b 不再计算;a || b a 为真,则 b 不再计算。
  • 赋值运算符:, , , , , 等。
  • 条件运算符(三元运算符)表达式1 ? 表达式2 : 表达式3表达式1 为真,则整个表达式值为 表达式2,否则为 表达式3
  • 逗号运算符:,从左到右依次计算,整个表达式的值是最后一个表达式的值。
  • 位运算符& (按位与), (按位或), ^ (按位异或), (按位取反), << (左移), >> (右移)。
  • 数据类型转换
    • 隐式转换:不同类型数据混合运算时,自动将低类型转换为高类型。
    • 显式转换(强制类型转换)(类型名)表达式

基本语句

  • 表达式语句:表达式后加分号,如 a = 10;
  • 空语句:只有一个分号 。
  • 复合语句(块语句):用 括起来的一组语句。
  • 输入输出函数
    • printf():格式化输出,格式控制符:%d (int), %c (char), %f (float), %lf (double), %s (字符串), (输出%)。
    • scanf():格式化输入,注意:变量前要加 &(地址符),%c 会读取空格和回车,%s 遇到空格、回车、Tab会停止。
  • 分支语句
    • if-else:实现单分支、双分支、多分支结构。
    • switch:实现多分支结构,注意 case 后的值必须为常量,break 的作用是跳出 switch
  • 循环语句
    • for:最灵活的循环,通常用于循环次数已知的情况。
    • while:当循环条件满足时执行循环体,循环次数不确定时常用。
    • do-while:先执行一次循环体,再判断条件,至少执行一次。
    • break:跳出当前循环或 switch
    • continue:结束本次循环,进入下一次循环。

数组

  • 一维数组
    • 定义:类型 数组名[长度];
    • 初始化:int a[5] = {1, 2, 3, 4, 5};int a[] = {1, 2, 3, 4, 5};
    • 引用:数组名[下标],下标从0开始。
  • 二维数组
    • 定义:类型 数组名[行数][列数];
    • 初始化:int a[2][3] = {{1,2,3}, {4,5,6}};
    • 引用:数组名[行下标][列下标]
  • 字符数组与字符串
    • 字符数组:char str[10] = {'H', 'e', 'l', 'l', 'o'};
    • 字符串:以 '\0' (空字符) 结尾的字符数组。char str[] = "Hello"; 等价于 char str[] = {'H', 'e', 'l', 'l', 'o', '\0'};
    • 常用字符串处理函数:strlen() (求长度), strcpy() (拷贝), strcat() (连接), strcmp() (比较)。

函数

  • 定义返回值类型 函数名(形参列表) { 函数体 }
  • 声明返回值类型 函数名(形参列表);,在调用前声明。
  • 调用函数名(实参列表);,实参与形参个数、类型、顺序要一致。
  • 参数传递
    • 值传递:单向传递,函数内部修改不会影响实参的值(基本数据类型)。
    • 地址传递:传递变量的地址,函数可以通过指针修改实参的值(数组、指针)。
  • 递归:函数直接或间接调用自身,必须有明确的递归终止条件。
  • 变量存储类别
    • 局部变量:在函数内部定义,作用域仅限于该函数。
    • 全局变量:在所有函数外部定义,作用域是整个程序。
    • static:静态局部变量(生命周期延长到整个程序),静态全局变量(作用域限制在本文件)。
    • extern:声明外部全局变量。

指针

  • 定义:指针是一个变量,其值为另一个变量的地址。
    • int *p; // 定义一个指向整型数据的指针p。
    • int a = 10; p = &a; // 将变量a的地址赋给指针p。
  • 指针运算
    • (解引用/间接访问运算符):*p 访问指针p所指向地址的值。
    • & (取地址运算符):&a 获取变量a的地址。
    • , :指针可以加减一个整数,指向下一个/上一个同类型元素。
  • 指针与数组
    • 数组名 a 代表数组首元素的地址 &a[0]
    • a[i] 等价于 *(a+i)
    • p[i] 等价于 *(p+i)
  • 指针与函数
    • 指针作为函数参数:实现地址传递,修改实参。
    • 函数指针:指向函数的指针。int (*p)(int, int);
    • 指针函数:返回指针的函数。int* func();

结构体与共用体

  • 结构体 (struct):将不同类型的数据组合成一个整体。
    • 定义:struct 结构体名 { 成员列表 };
    • 引用:结构体变量名.成员名
    • 指针引用结构体:结构体指针->成员名(*结构体指针).成员名
  • 共用体 (union):所有成员共享同一段内存空间,大小最大的成员决定共用体的大小。
    • 定义:union 共用体名 { 成员列表 };
    • 特点:同一时间只能存储一个成员的值。

文件操作

  • 文件指针FILE *fp;
  • 打开文件fopen()
    • "r" (只读), "w" (只写,覆盖), "a" (追加), "rb", "wb", "ab" (二进制模式)。
  • 关闭文件fclose()
  • 读写文件
    • fgetc() / fputc() (字符读写)
    • fgets() / fputs() (字符串读写)
    • fread() / fwrite() (块读写,用于二进制文件)
    • fprintf() / fscanf() (格式化读写)
  • 文件定位
    • rewind(fp):文件指针回到文件开头。
    • fseek(fp, offset, whence):移动文件指针。whence 可为 SEEK_SET (文件头), SEEK_CUR (当前位置), SEEK_END (文件尾)。

考试备考建议

  1. 熟悉考试环境:考试通常使用 Visual C++ 6.0 或 Dev-C++ 等环境,提前熟悉其调试功能(设置断点、单步执行、查看变量值)。
  2. 多动手写代码:二级C语言是上机考试,编程题占大头,光看不练是假把式,一定要亲手敲代码,并运行调试。
  3. 掌握基础,理解原理:特别是指针、数组、函数传参等核心概念,务必理解其底层原理,而不是死记硬背。
  4. 刷真题,总结规律:历年真题是最好的复习资料,通过做题,了解考试题型、重点、难点和高频考点。
  5. 注意细节:C语言对语法要求严格,注意分号、大括号的匹配、变量定义的位置、scanf&、指针的初始化等细节。
  6. 调试能力:遇到错误时,要学会看编译错误信息,并利用调试工具定位问题,这是编程能力的核心体现。

祝你考试顺利,取得好成绩!

-- 展开阅读全文 --
头像
dede所有栏目如何开启静态化?
« 上一篇 今天
c语言 能否构成三角形
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

目录[+]