1、计算机等级考试二级(C+)44 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(每小题 2分,共 70分) 下列各(总题数:35,分数:70.00)1.数字字符 0 的 ASCII 值为 48,若有以下程序 main() char a=1,b=2 ; printf(“%c,“,b+);printf(“%d/n“,b-a); 程序运行后的输出结果是_。 (分数:2.00)A.3,2B.50,2C.2,2D.2,502.执行语句 for(i=1;i+ 4;);,后变量 i的值是(分数:2.00)A.SELECT姓名 FROM车间; WHERE 工资3000 AND 车间=“W1“
2、OR 车间=“W2“B.SELECT姓名 FROM车间; WHERE 工资3000 AND(车间=“W1“OR 车间=“W2“)C.SELECT姓名 FROM车间; WHERE 工资3000 OR 车间=“W1“OR 车间=“W2“D.SELECT姓名 FROM车间; WHERE 工资3000 AND(车间=“W1“OR 车间=“W2“)3.有如下程序: #include“iostreamh“ void main( ) int x=1,a=0,b=0; switch(x) case 0:b+; case 1:a+; case 2:a+;b+; cout “a=“ a “,“ “b=“ b; 该
3、程序的输出结果是( )。 (分数:2.00)A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=24.设有定义 int x;float y;,则 10+x+y值的数据类型是( )。(分数:2.00)A.ControlBox仍起作用B.运行时还可以看到窗口左上角显示的控制框,可以单击该控制框进行窗体的移动和关闭等操作C.窗口边框上的最大化和最小化按钮失效D.窗口边框上的最大化和最小化按钮消失5.下列关于构造函数说法不正确的是( )。(分数:2.00)A.构造函数必须与类同名B.构造函数可以省略不写C.构造函数必须有返回值D.在构造函数中可以对类中的成员进行初始化6.设变量 a是
4、 int型,f 是 double型,i 是 float型,则表达式 10 + a + i * f 值的数据类型是( )。(分数:2.00)A.具有相关性,但非从属性的平行的B.具有相关性,并且具有从属性的C.不具有相关性,但具有从属性的D.不具有相关性,也不具有从属性的7.下列数据结构中,能用二分法进行查找的是_。 (分数:2.00)A.顺序存储的有序线性表B.线性链表C.二叉链表D.有序线性链表8.下列程序段的输出结果是( )。 #includeiostreamh void fun(int * X,int * y) cout * X * y; * X=3; * y=4; void main(
5、 ) int x=1,y=2; fun( else return(n+fun(n-1); main() int x; scanf(“%d“,x=fun(x);printf(“%d/n“,x); 执行程序时,给变量 x输入 10,程序的输出结果是_。 (分数:2.00)A.55B.54C.65D.4510.有以下程序: main() char a7=“a0/0a0/0“; int i,j; i=sizeof(a); j=strlen(a); printf(“%d %d/n“,i,j); 程序运行后的输出结果是_。 (分数:2.00)A.2 2B.7 6C.7 2D.6 211.有如下程序 #in
6、clude #include using namespace std; class MyClass public: MyClass()cout=1) return f(a,n-1)+an-1; else return 0; main2 int aa5=1,2,3,4,5,s; s=f(aa,5); printf(“%d/n“,s); (分数:2.00)填空项 1:_44.下面程序的输出结果为 1。 # include iostreamh void main2 int num=0,i=8; do i ; num+; while(i); cout num endl; (分数:2.00)填空项 1:
7、_45.以下程序运行后的输出结果是 1 。 struct NODE int k; struct NODE *link; ; main2 struct NODE m5,*p=m,*q=m+4; int i=0; while(p!=q) p-k=+i; p+; q-k=i+; q-; q-k=i; for(i=0;i填空项 1:_46.假定 A为一个类,则语句 A(A else return 0; main2 int aa5=1,2,3,4,5,s; s=f(aa,5); printf(“%d/n“,s); (分数:2.00)填空项 1:_ (正确答案:15)解析:本题通过递归调用实现了数组 aa
8、 各元素之和,即 a4+a3+a2+a1+a0=15。44.下面程序的输出结果为 1。 # include iostreamh void main2 int num=0,i=8; do i ; num+; while(i); cout num endl; (分数:2.00)填空项 1:_ (正确答案:4)解析:本题考查的是考生分析简单循环结构的能力。大体过程为第 1次进入循环,i 变成 7,num 变为1,i 变为 6;第 2次进入循环,i 变成 5,num 变为 2,i 变为 4;第 3次进入 循环,i 变成 3,num 变为3,i 变为 2;第 4次进入循环,i 变成 1,num 变为 4
9、,i 变为 0,循环 结束。 45.以下程序运行后的输出结果是 1 。 struct NODE int k; struct NODE *link; ; main2 struct NODE m5,*p=m,*q=m+4; int i=0; while(p!=q) p-k=+i; p+; q-k=i+; q-; q-k=i; for(i=0;i填空项 1:_ (正确答案:13431)解析:程序执行过程如下:p=m,q=m+4,条件 p!=q 成立,执行 p-k=+i;,由于是“前加”,所以 m0.k=1,执行 p+后 p=m+1;执行 q-k=i+;,由于是“后加”,所以 m4.k=1,然后使得
10、i 加上 1,即 i=2,q-后,q=m+3; p=m+1,q=m+3,条件 p!=q 成立,执行 p-k=+i; ,由于是“前加”,所以 i=3,m0.k=3,执行 p+后 p=m+2; 执行 q-k=i+; ,由于是“后加”,所以 m4.k=3,i=4,q-后,q=m+2;p=m+2,q=m+2,条件 p!=q 不成立,则执行 q-k=i;即 m2.k=4;故输出的值为 13431。46.假定 A为一个类,则语句 A(A for(i=1;i=5;i+) t=i+= 2; s=s+t; printf(“s=%d/n“,s); (分数:2.00)填空项 1:_ (正确答案:t*10)解析:本程序中变量 s 用于存放表达式“1+12+123+1234+12345”之和,变量 t 用于存放其表达式的各项, 由于 i=1 时,要使得 t=1;i=2 时,要使得 t=12;i=3 时,要使得 t=123;依此类推。故每一次循环的 t 的值 与此次的 i 及上次的 t 密切相关,即每一次的 t 值可用上次的 t 乘以 10 再加上此次的 i 的值就可以了,所以 本题答案为 t*10。