考试概述
- 考试时间:每年5月和11月各举行一次全国统一考试。
- 考试科目:二级C语言程序设计。
- 考试形式:上机考试,全程在计算机上进行操作。
- 考试时长:120分钟。
- 满分:100分。
- 合格标准:总分达到 60分 及以上。
考试内容与分值分布
主要分为两大模块:公共基础知识 和 C语言程序设计。

(图片来源网络,侵删)
公共基础知识 (约20分)
不依赖于任何特定编程语言,主要考察计算机科学的基础概念,在C语言考试中,这部分内容通常以选择题的形式出现。
- 数据结构与算法
- 算法的基本概念、复杂度(时间复杂度、空间复杂度)。
- 数据结构的定义、逻辑结构与存储结构(顺序、链式)。
- 线性表(栈、队列、链表)的定义、特点和基本操作。
- 树与二叉树(二叉树的定义、性质、遍历:前序、中序、后序)。
- 查找(顺序查找、二分查找)和排序(冒泡、选择、插入、快速排序)的基本思想。
- 程序设计基础
程序设计风格、结构化程序设计(顺序、选择、循环)。
- 软件工程基础
- 软件工程基本概念、软件生命周期。
- 软件工具与软件开发环境。
- 数据库设计基础
- 数据库、数据库管理系统、数据库系统的基本概念。
- 数据模型(E-R模型、关系模型)。
- 关系运算(选择、投影、连接)。
- 数据库设计(需求分析、概念设计、逻辑设计、物理设计)。
C语言程序设计 (约80分)
这是考试的核心部分,全部为上机操作题,包括三大题型:
| 题型 | 题量 | 分值 | 考察重点 |
|---|---|---|---|
| 选择题 | 10题 | 20分 | 基本概念、语法规则、运算符优先级、数据类型、函数、指针等基础知识。 |
| 程序填空题 | 2题 | 18分 | 给出一个不完整的程序,要求在指定位置填入正确的代码,使程序完整或实现特定功能。 |
| 程序修改题 | 2题 | 18分 | 给出一个有错误的程序,要求找到错误并修改(通常是1-3处语法或逻辑错误)。 |
| 程序设计题 | 1题 | 24分 | 给出题目要求,要求考生自己编写一个完整的或部分的功能函数来实现题目要求。 |
核心考点详解 (C语言部分)
基础知识 (选择题、填空题重点)
- 数据类型与变量:
int,float,double,char的取值范围、存储方式,变量的定义、初始化和作用域。 - 运算符与表达式:
- 算术运算符 (, , , , )。
- 关系运算符 (
>,<, , )。 - 逻辑运算符 (
&&, , )。 - 特别注意:运算符的优先级和结合性(如
&&优先级高于 , 优先级最高)。 - 自增/自减运算符 (, ) 的前置和后置区别。
- 赋值运算符 () 和复合赋值运算符 (, 等)。
- 基本输入输出:
printf()函数的格式化输出(%d,%f,%c,%s,%lf等)。scanf()函数的格式化输入(特别注意:scanf读取字符时'\n'的缓冲区问题,读取数字后读取字符前通常需要getchar()清空缓冲区)。getchar()和putchar()的使用。
三大基本结构 (所有题型都会涉及)
- 顺序结构:代码的默认执行顺序。
- 选择结构:
if-else语句(单分支、双分支、多分支嵌套)。switch语句(case的穿透现象,break的作用)。
- 循环结构:
for循环(最常用,适合已知循环次数的场景)。while循环(适合基于条件判断的场景)。do-while循环(至少执行一次)。break和continue的区别。
数组 (重要考点)
- 一维数组:定义、初始化、元素访问(
arr[i])、遍历。 - 二维数组:定义、初始化、元素访问(
arr[i][j])、遍历。 - 字符串:
- 字符数组与字符串的关系。
- 字符串的输入输出(
scanf("%s", str)的局限,gets()已不安全,fgets()是更好的选择)。 - 常用的字符串处理函数(
strlen,strcpy,strcmp,strcat),必须知道它们的原型和返回值。
函数 (核心考点)
- 函数定义:返回值类型、函数名、形参列表、函数体。
- 函数调用:传值调用(C语言默认)、传址调用(通过指针实现)。
- 参数传递:基本数据类型是传值,数组名作为参数会退化为指针,是传址。
- 递归函数:函数直接或间接地调用自身,关键在于找到递归的终止条件和递推公式(如阶乘、斐波那契数列)。
- 变量的存储类别:
auto,static,extern,register,特别是static局部变量的特点(只初始化一次,生命周期延长至整个程序)。
指针 (重中之重、难点)
这是C语言的灵魂,也是考试的重中之重和难点。

(图片来源网络,侵删)
- 指针基础:指针变量的定义(
int *p;)、初始化、取地址运算符 (&)、解引用运算符 ()。 - 指针与数组:
- 指针指向数组元素 (
p = &arr[0]或p = arr)。 - 使用指针遍历数组 (
p++)。 - 数组名作为函数参数时,本质上是传递数组首元素的地址。
- 指针指向数组元素 (
- 指针与字符串:使用指针操作字符串(
char *p = "hello";)。 - 函数指针:指向函数的指针,理解其定义形式,如
int (*p)(int, int);。 - 指针数组与数组指针:
- 指针数组:数组元素都是指针,如
int *p[5];。 - 数组指针:指向一个数组的指针,如
int (*p)[5];。
- 指针数组:数组元素都是指针,如
- 多级指针:指向指针的指针 (
int **pp;)。
结构体与共用体
- 结构体 (struct):
- 定义:
struct Student { int id; char name[20]; }; - 定义结构体变量:
struct Student s1; - 成员访问:使用点运算符 (
s1.id)。 - 结构体指针:使用箭头运算符 (
s1->id)。
- 定义:
- 共用体 (union):了解其特点(所有成员共享同一块内存空间)。
文件操作
- 文件指针:
FILE *fp; - 基本操作函数:
- 打开文件:
fopen() - 关闭文件:
fclose() - 读写函数:
fgetc(),fputc(),fgets(),fputs(),fscanf(),fprintf(),fread(),fwrite() - 判断文件结束:
feof() - 定位函数:
fseek(),rewind()
- 打开文件:
备考建议
- 吃透教材,夯实基础:系统地学习一遍教材,理解每一个语法点,不要只记结论,特别是指针部分,要反复琢磨。
- 多动手,勤上机:C语言是实践性极强的学科。一定要亲手敲代码,而不是只看不练,把教材上的例题都自己实现一遍。
- 重视真题,反复练习:找近几年的考试真题进行练习,真题是最好的复习资料,能帮你了解考试难度、题型和重点。
- 掌握调试技巧:学会使用编译器的调试功能(如设置断点、单步执行、观察变量值),在修改题和设计题中,调试能力至关重要,能帮你快速定位逻辑错误。
- 分类整理,归纳总结:
- 整理错题本:记录自己做错的题目,特别是那些因为概念不清而犯的错误。
- 总结常用算法:如素数判断、最大公约数/最小公倍数、排序、查找等,这些是程序设计题的常客。
- 记忆常用函数:牢记
strlen,strcpy,strcmp等字符串函数的用法和返回值。
- 模拟考试,适应环境:考前找几套完整的模拟题,在120分钟内完成,熟悉考试环境和时间分配策略。
祝您考试顺利!

(图片来源网络,侵删)
