附录C 全国计算机等级考试二级笔试样卷C 语言程序设计
附录
附录A 初学者常见C 语言编程错误及解决方法

续表

续表

续表

续表

续表

续表

续表

续表

续表

续表

续表

续表

续表

续表

续表

续表

续表

续表

续表

续表

续表

附录B 全国计算机等级考试二级C 语言程序设计考试大纲(2018年版)
基本要求
1.熟悉Visual C++集成开发环境。
2.掌握结构化程序设计的方法,具有良好的程序设计风格。
3.掌握程序设计中简单的数据结构和算法并能阅读简单的程序。
4.在Visual C++集成环境下,能够编写简单的C 程序,并具有基本的纠错和调试程序的能力。
考试内容
一、C 语言程序的结构
1.程序的构成.main 函数和其他函数。
2.头文件、数据说明、函数的开始和结束标志以及程序中的注释。
3.源程序的书写格式。
4.C 语言的风格。
二、数据类型及其运算
1.C 语言的数据类型(基本类型、构造类型、指针类型、无值类型)及其定义方法。
2.C 语言运算符的种类、运算优先级和结合性。
3.不同类型数据间的转换与运算。
4.C 语言表达式类型(赋值表达式、算术表达式、关系表达式、逻辑表达式、条件表达式、逗号表达式)和求值规则。
三、基本语句
1.表达式语句、空语句、复合语句。
2.输入输出函数的调用,正确输入数据并正确设计输出格式。
四、选择结构程序设计
1.用if 语句实现选择结构。
2.用switch 语句实现多分支选择结构。
3.选择结构的嵌套。
五、循环结构程序设计
1.for 循环结构。
2.while 和do-while 循环结构。
3.continue 语句和break 语句。
4.循环的嵌套。
六、数组的定义和引用
1.一维数组和二维数组的定义、初始化和数组元素的引用。
2.字符串与字符数组。
七、函数
1.库函数的正确调用。
2.函数的定义方法。
3.函数的类型和返回值。
4.形式参数与实际参数,参数值的传递。
5.函数的正确调用、嵌套调用、递归调用。
6.局部变量和全局变量。
7.变量的存储类别(自动、静态、寄存器、外部),变量的作用域和生存期。
八、编译预处理
1.宏定义和调用(不带参数的宏定义,带参数的宏定义)。
2.“文件包含”处理。
九、指针
1.地址与指针变量的概念,地址运算符与间址运算符。
2.一维、二维数组和字符串的地址以及指向变量、数组、字符串、函数、结构体的指针变量的定义。通过指针引用以上各类型数据。
3.用指针作函数参数。
4.返回地址值的函数。
5.指针数组,指向指针的指针。
十、结构体(即“结构”)与共同体(即“联合”)
1.用typedef 说明一个新类型。
2.结构体和共用体类型数据的定义和成员的引用。
3.通过结构体构成链表,单向链表的建立,结点数据的输出、删除与插入。
十一、位运算
1.位运算符的含义和使用。
2.简单的位运算。
十二、文件操作
只要求缓冲文件系统(即高级磁盘I/O 系统),对非标准缓冲文件系统(即低级磁盘I/O系统)不要求。
1.文件类型指针(FILE 类型指针)。
2.文件的打开与关闭(fopen,fclose)。
3.件的读写(fputc、fgetc、fputs、fgets、fread、fwrite、fprintf、fscanf 函数的应用),文件的定位(rewind、fseek 函数的应用)
考试方式
上机考试,考试时长120 分钟,满分100 分。
1.题型及分值
单项选择题40 分(含公共基础知识部分10 分)。
操作题60 分(包括程序填空题、程序修改题及程序设计题)。
2.考试环境
操作系统:中文版Windows 7。
开发环境:Microsoft Visual C++ 2010 学习版。
附录C 全国计算机等级考试二级笔试样卷C 语言程序设计
一、选择题((1)—(10)、(21)—(40)每题2 分,(11)—(20)每题2 分,共70 分)。下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)下列选项中不符合良好程序设计风格的是( )。
A)源程序要文档化 B)数据说明的次序要规范化
C)避免滥用goto 语句 D)模块设计要保证高耦合、高内聚
(2)从工程管理角度,软件设计一般分为两步完成,它们是( )。
A)概要设计与详细设计 B)数据设计与接口设计
C)软件结构设计与数据设计 D)过程设计与数据设计
(3)下列选项中不属于软件生命周期开发阶段任务的是( )。
A)软件测试 B)概要设计 C)软件维护 D)详细设计
(4)在数据库系统中,用户所见的数据模式为( )。
A)概念模式 B)外模式 C)内模式 D)物理模式
(5)数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和( )。
A)编码设计 B)测试阶段 C)运行阶段 D)物理设计
(6)设有如下3 个关系表:

下列操作中正确的是( )。
A)T=R∩S B)T=R∪S C)T=R×S D)T=R/S
(7)下列叙述中正确的是( )。
A)一个算法的空间复杂度大,则其时间复杂度也必定大
B)一个算法的空间复杂度大,则其时间复杂度必定小
C)一个算法的时间复杂度大,则其空间复杂度必定小
D)上述三种说法都不对
(8)在长度为64 的有序线性表中进行顺序查找,最坏情况下需要比较的次数为( )。
A)63 B)64 C)6 D)7
(9)数据库技术的根本目标是要解决数据的( )。
A)存储问题 B)共享问题 C)安全问题 D)保护问题
(10)对下列二叉树

进行中序遍历的结果是( )。
A)ACBDFEG B)ACBDFGE
C)ABDCGEF D)FCADBEG
(11)下列叙述中错误的是( )。(https://www.daowen.com)
A)一个C 语言程序只能实现一种算法
B)C 程序可以由多个程序文件组成
C)C 程序可以由一个或多个函数组成
D)一个C 函数可以单独作为一个C 程序文件存在
(12)下列叙述中正确的是( )。
A)每个C 程序文件中都必须要有一个int main()函数
B)在C 程序中int main()函数的位置是固定的
C)C 程序中所有函数之间都可以相互调用,与函数所在位置无关
D)在C 程序的函数中不能定义另一个函数
(13)下列定义变量的语句中错误的是( )。
A)int _int; B)double int_; C)char For; D)float US$;
(14)若变量x、y 已正确定义并赋值,以下符合C 语言语法的表达式是( )。
A) ++x,y=x- - B)x+1 =y
C)x=x+10 =x+y D)double(x)/10
(15)以下关于逻辑运算符两侧运算对象的叙述中正确的是( )。
A)只能是整数0 或1 B)只能是整数0 或非0 整数
C)可以是结构体类型的数据 D)可以是任意合法的表达式
(16)若有定义int x,y; 并已正确给变量赋值,则以下选项中与表达式(x -y)?(x ++) :(y++)中的条件表达式(x-y) 等价的是( )。
A)(x-y>0) B)(x-y<0) C)(x-y<0‖x-y>0) D)(x-y==0)
(17)有以下程序

程序运行后的输出结果是( )。
A)2,3,3 B)2,3,2 C)2,3,1 D)2,2,1
(18)设有定义:int a;float b;执行scanf("%2d%f",&a,& B); 语句时,若从键盘输入876 543.0 <回车>,a 和b 的值分别是( )。
A)876 和543.000000 B)87 和6.000000
C)87 和543.000000 D)76 和543.000000
(19)有以下程序

程序运行后的输出结果是( )。
A)a+b=10 B)a+b=30 C)30 D)出错
(20)在嵌套使用if 语句时,C 语言规定else 总是( )。
A)和之前与其具有相同缩进位置的if 配对
B)和之前与其最近的if 配对
C)和之前与其最近的且不带else 的if 配对
D)和之前的第一个if 配对
(21)下列叙述中正确的是( )。
A)break 语句只能用于switch 语句
B)在switch 语句中必须使用default
C)break 语句必须与switch 语句中的case 配对使用
D)在switch 语句中,不一定使用break 语句
(22)有以下程序


执行后的输出结果是( )。
A)1 B)2 C)4 D)死循环
(23)有以下程序

执行后的输出结果是( )。
A)5 B)24 C)32 D)40
(24)以下选项中,值为1 的表达式是( )。
A)1 -'0' B)1 - '\0' C)'1' -0 D)'\0' - '0'
(25)有以下程序

执行后的输出结果是( )。
A)6 B)7 C)8 D)9
(26)有以下程序
![]()

执行后的结果是( )。
A)输出字符a 的ASCII 码 B)输出字符c 的ASCII 码
C)输出字符c D)程序出错
(27)有以下程序

执行后的输出结果是( )。
A)5,5 B)5,11 C)11,11 D)11,5
(28)有以下程序


执行后的输出结果是( )。
A)7 B)3 C)2 D)0
(29)在16 位编译系统上,若有定义int a[] ={10,20,30},*p=&a;,当执行p++;后,下列说法错误的是( )。
A)p 向高地址移了一个字节 B)p 向高地址移了一个存储单元
C)p 向高地址移了两个字节 D)p 与a+1 等价
(30)有以下程序

执行后的输出结果是( )。
A)1 B)2 C)3 D)4
(31)若有定义:int w[3][5]; ,则以下不能正确表示该数组元素的表达式是( )。
A)*(*w+3) B)*(w+1)[4]
C)*(*(w+1)) D)*(&w[0][0] +1)
(32)若有以下函数首部
int fun(double x[10],int *n)
则下面针对此函数的函数声明语句中正确的是( )。
A)int fun(double x,int *n); B)int fun(double ,int );
C)int fun(double *x,int n); D)int fun(double *,int *);
(33)有以下程序


程序运行后输出的结果是( )。
A)6 7 8 9 10 B)1 3 5 7 9 C)1 2 3 4 5 D)6 2 3 4 5
(34)有以下程序

若运行时输入:2 4 6 <回车>,则输出结果为( )。
A)2 0 0 B)2 0 4 C)2 4 0 D)2 4 6
(35)有以下程序

则以下函数调用语句错误的是( )。
A)k=(*f)(a, B); B)k=add(a, B);
C)k= *f(a, B); D)k=f(a, B);
(36)有以下程序

![]()
则程序的输出结果是( )。
A)3 B)5 C)7 D)11
(37)有以下程序

程序的运行结果是( )。
A)12 12 B)11 7 C)11 11 D)12 7
(38)有以下结构体说明、变量定义和赋值语句

则以下scanf 函数调用语句中错误引用结构体变量成员的是( )。
A)scanf("%s",s[0].name); B)scanf("%d",&s[0].age);
C)scanf("%c",&(ps- >sex)); D)scanf("%d",ps- >age);
(39)若有以下定义和语句

则以下语句正确的是( )。
A)x=10.5; B)x.c=101;
C)y=x; D)printf("%d\n",x);
(40)有以下程序

程序执行后的输出结果是( )。
A)d B)c C)b D)a
二、填空题(每空2 分,共30 分)
请将每一个空的正确答案写在答题卡【1】至【15】序号的横线上,答在试卷上不得分。
(1)下列软件系统结构图的宽度为【1】。
(2)【2】的任务是诊断和改正程序中的错误。
(3)一个关系表的行称为【3】。
(4)按“先进后出”原则组织数据的数据结构是【4】。
(5)数据结构分为线性结构和非线性结构,带链的队列属于【5】。
(6)设有定义:float x=123.4567;,则执行以下语句后的输出结果是【6】。
printf("%f\n",(int)(x*100 +0.5)/100.0);
(7)以下程序运行后的输出结果是【7】。

(8)以下程序运行后的输出结果是【8】。
![]()

(9)有以下程序,若运行时从键盘输入:18,11 <回车>,则程序的输出结果是【9】。

(10)以下程序的功能是:将输入的正整数按逆序输出。例如:若输入135 则输出531。请填空。

![]()
(11)以下程序中,函数fun 的功能是计算x2 -2x+6,主函数中将调用fun 函数计算:

(12)下面程序的运行结果是:【15】。
