计算机等级考试二级C模拟题及答案详解
一、选择题
在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)算法的空间复杂度是指
A)算法程序的长度 B)算法程序中的指令条数 C)算法程序所占的存储空间 D)执行算法需要的内存空间
(2)在结构化程序设计中,模块划分的原则是
A)各模块应包括尽量多的功能 B)各模块的规模应尽量大 C)各模块之间的联系应尽量紧密
D)模块内具有高内聚度、模块间具有低耦合度 (3)下列叙述中,不属于测试的特征的是
A)测试的挑剔性 B)完全测试的不可能性 C)测试的可靠性 D)测试的经济性
(4)下面关于对象概念的描述中,错误的是
A)对象就是C语言中的结构体变量 B)对象代表着正在创建的系统中的一个实体 C)对象是一个状态和操作(或方法)的封装体 D)对象之间的信息传递是通过消息进行的
(5)下列关于队列的叙述中正确的是
A)在队列中只能插入数据 B)在队列中只能删除数据 C)队列是先进先出的线性表 D)队列是先进后出的线性表
(6)已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是 A)acbed B)decab C)deabc D)cedba
(7)某二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为 A)n+1 B)n-1 C)2n D)n/2 (8)设有如下三个关系表 R S T A B C A B C m 1 3 m 1 3 n n 1 3
下列操作中正确的是
A) T=R∩S B) T=R∪S C) T=R×S D) T=R/S (9)下列叙述中,正确的是
A)用E-R图能够表示实体集间一对一的联系、一对多的联系和多对多的联系 B)用E-R图只能表示实体集之间一对一的联系 C)用E-R图只能表示实体集之间一对多的联系 D)用E-R图表示的概念数据模型只能转换为关系数据模型 (10)下列有关数据库的描述,正确的是
A)数据处理是将信息转化为数据的过程 B)数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变
C)关系中的每一列称为元组,一个元组就是一个字段 D)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字 (11)C语言规定,在一个源程序中,main函数的位置
A)必须在最开始 B)必须在系统调用的库函数的后面 C)可以任意 D)必须在最后
(12)以下叙述中错误的是
A)计算机不能直接执行用C语言编写的源程序 B)C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件
C)后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件 D)后缀为.obj和.exe的二进制文件都可以直接运行
(13)下列选项可以正确表示字符型常量的是
A)′\\r′ B)\ C)\\\897\ D)296 (14)以下叙述中正确的是
A)构成C程序的基本单位是函数 B)可以在一个函数中定义另一个函数 C)main()函数必须放在其他函数之前 D)C函数定义的格式是K&R格式
(15)设变量均已正确定义,若要通过scanf(\语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。以下所示的输入形式中正确的是(注:□代表空格字符)
A) 10□X□20□Y<回车> B) 10□X20□Y<回车> C) 10□X<回车> 20□Y<回车> D) 10X<回车> 20Y<回车>
(16)若有说明:int *p,m=5,n;,以下正确的程序段是
A)p=&n;scanf(\ B)p=&n;scanf(\ C)scanf(\ D)p=&n;*p=m;
(17)在执行下述程序时,若从键盘输入6和8,则结果为 main()
{ int a,b,s;
scanf(\ s=a if(a
printf(\ A)36 B)64 C)48 D)以上都不对 (18)若执行下面的程序时,从键盘输入5和2,则输出结果是 main() { int a,b,k;
scanf(\ k=a;
if(a
A)5 B)3 C)2 D)0
(19)在C语言中,函数返回值的类型最终取决于
A)函数定义时在函数首部所说明的函数类型 B)return语句中表达式值的类型 C)调用函数时主调函数所传递的实参类型 D)函数定义时形参的类型
(20)已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。以下不能将变量c中的大写字母转换为对应小写字母的语句是
A)c=(c-′A′)&+′a′ B)c=c+32 C)c=c-′A′+′a′ D)c=(′A′+c)&-′a′ (21)以下选项中,当x为大于l的奇数时,值为0的表达式是 A)x%2==1 B)x/2 C)x%2!=0 D)x%2==0 (22)有以下程序 main()
{int k=5,n=0; do
{switch(k)
{case 1: case 3:n+=1;k--;break; default:n=0;k--;
case 2: case 4:n+=2;k--;break; }
printf(\ }while(k>0 && n<5);
}
程序运行后的输出结果是
A)235 B)0235 C)02356 D)2356 (23)有如下程序 main() { int n=9;
while(n>6){n--; printf(\ 该程序的输出结果是 A)987 B)876 C)8765 D)9876 (24)有以下程序 #include
while((c=getchar())!=′\\n) { switch(c-′2′) { case 0:
case 1:putchar(c+4);
case 2:putchar(c+4);break; case 3:putchar(c+3);
case 4:putchar(c+3);break; } } printf(\
从第一列开始输入以下数据
程序的输出结果是
A)66877 B) C) D) (25)有以下程序 main()
{ int x=0,y=0,i; for (i=1;;++i)
{ if (i%2==0) {x++;continue;} if (i%5==0) {y++;break;} } printf (\ 程序的输出结果是
A)2,1 B)2,2 C)2,5 D)5,2 (26)有以下程序 main()
{int a[4][4]={{l,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,j,k,t; for(i=0;i<4;i++) for(j=0;j<3;j++)
for(k=j+1;k<4;k++)
if(a[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/ for(i=0;i<4;i++)printf(\ }
程序运行后的输出结果是 A)1,6,5,7, B)8,7,3,1, C)4,7,5,2, D)1,6,2,1, (27)有以下程序 int f(int n)
{ if(n==1)return 1;
else return f(n-1)+1;} main() { int i,j=0;
for(i=1;i<3;i++)j+=f(i); printf(\
程序运行后的输出结果是
A)4 B)3 C)2 D)1
(28)当运行以下程序时,从键盘输入AhaMA(空格)Aha