2021年9月全国计算机二级C语言考试真题及答案
2021年9月全国计算机二级C语言考试真题及答案 2021年9月全国计算机等级考试二级笔试试卷 C语言程序设计 (考试时间90分钟,满分100分) 一、选择题((1)—(10)、(21)—(40)每题2分,(11)—(20)每题1分,共70分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。 (1)下列叙述中正确的是 A)算法就是程序B)设计算法时只需考虑数据结构的设计C)设计算法时只需考虑结果的可靠性D)以上三种说法都不对 (2)下列关于线性链表叙述中,正确的是 A)各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致 B)各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续 C)进入插入与删除时,不需要移动表中的元素 D)以上三种说法都不对 (3)下列关于二叉树的叙述中,正确的是 A)叶子结点总是比度为2的结点少一个B)叶子结点总是比度为2的结点多一个C)叶子结点数是度为的结点数的两倍D)度为2的结点数是度为1的结点数的两倍 (4)软件按功能分为应用软件、系统软件和支撑软件(或工具软件)。下现属于应用软件的是 A)学生成绩管理系统B)C语言编译程序C)UNIX操作系统D)数据库管理系统 (5) 该系统总体结构图的深度是 A)7 B)6 C)3 D)2 (6)程序调试的任务是 A)设计测试用例B)验证程序的正确性C)发现程序中的错误D)诊断和改正程序中的错误 (7)下列关于数据库设计的叙述中,正确是的 A)在需求分析阶段建立数据字典B)在概念设计阶段建立数据字典 C)在逻辑设计阶段建立数据字典 D)在物理设计阶段建立数据字典 (8)数据库系统的三级模式不包括 A)概念模式 B)内模式 C)外模式 D)数据模式 (9)有三个关系R 、S 和T 如下: 则由关系R 和S 得到关系T 的操作是 A)自然连接 B)差 C)交 D)并 (10)下列选项中属于面向对象设计方法主要特征的是 A)继承 B)自顶向下 C)模块化 D)逐步求精 (11)以下叙述中错误的是 A)C 语言编写的函数源程序,其文件名后缀可以是.C B)C 语言编写的函数都可以作为一个独立的源程序文件 C)C 语言编写的每个函数都可以进行独立的编译并执行 D)一个C 语言程序只有一个主函数 (12)以下选项中关于程序模块化的叙述错误的是 A)把程序分成若干相对独立的模块,可便于编码和调试 B)把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块 C)可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序 D)可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序 (13)以下选项中关于C 语言常量的叙述错误的是 A)所谓常量,是指在程序运行过程中,其值不能被改变的量 B)常量分为整型常量、实型常量、字符常量和字符串常量 C)常量可分为数值常量和非数值常量 D)经常被使用的变量可以定义成常量 (14)若有定义语句: int a=10; double b=3.14; ,则表达式 A +a+b 的值的类型是 A)char B)int C)double D)float (15)若有定义语句: int x=12, y=8, z; ,在其后执行语句z=0.9+x/y;,则z 的值为 A)1.9 B)1 C)2 D)2.4 R S T (16)若有定义: int a,b;,通过语scanf(“%d;%d“,,能把整数3赋给变量a, 5赋给变量b的输入数据是 A)3 5 B)3,5 C)3;5 D)35 (17)若有定义语句: int k1=10, k2=20;,执行表达式(k1=k1>k2) if (--a) b++; else if(a==0) b+=2; else b+=3; printf(“%d\n“,b); } 程序运行后的输出结果是 A)0 B)1 C)2 D)3 (19)下列条件语句中,输出结果与其他语句不同的是 A) if(a) printf(“%d\n“, x); else printf(“%d\n“,y); B) if(a==0) printf(“%d\n“, y); else printf(“%d\n“,x); C) if(a!=0) printf(“%d\n“, x); else printf(“%d\n“,y); D) if(a==0) printf(“%d\n“, x); else printf(“%d\n“,y); (20)有以下程序 #include main( ) { int a=7; while (a--); printf(“%d\n“,a); } 程序运行后的输出结果是 A)-1 B)0 C)1 D)7 (21)以下不能输出字符A的语句是(注:字符A的ASCII码值为65,字符a的ASCII码值为97) A)printf(“%c\n“, a -32); B)printf(“%d\n“, A ) C)printf(“%c\n“,65); D)printf(“%c\n“, B -1); (22)有以下程序(注:字符a的ASCII码值为97) #include main( ) { char *s={“abc“}; do { printf(“%d“,*s%10); ++s; } while (*s); } 程序运行后的输入结果是 A)abc B)789 C)7890 D)979899 (23)若有定义语句: double a,*p= 以下叙述中错误的是 A)定义语句中的 * 号是一个间址运算符 B)定义语句中的 * 号只是一个说明符 C)定义语句中的p只能存放double类型变量的地址 D)定义语句中,*p= main( ) { double a=0; int i; for (i=0; iprintf(“%5.0f\n“,a); } double f(double x) { return x*x+1; } 程序运行后的输出结果是 A)503 B)401 C)500 D)1404 (25)若有定义语句: int year=2021, *p=,以下不能使变量