全国高等学校非计算机专业
计算机等级考试
二级C语言笔试试题
(A卷)
考试时间:2008年4月26日
上午9:00——11:00
考生必读:
1. 考生应严格遵守考场规则。考生拿到试卷后应首先将自己的所在学校名称、考场地点、性命、准考证号填涂在答题纸和答题卡规定的位置上。
2. 考生得到监考人员指令后方可作答。
3. 考生在答题前务必认真阅读题目要求,按要求作答。客观题的答案(选择题和判断题)必须用2B铅笔填涂在答题卡的相应位置上;主观题的答案必须用蓝、黑色钢笔或圆珠笔填写在答题纸的相应位置上;且必须注明试卷类型(A卷或B卷)。否则答案无效。
4. 注意字迹清楚,保持卷面整洁。
5. 考试时间为120分钟。考试结束时,把试题册、答题卡、答题纸放在桌上,不得带走。等监考人员收齐点清后,考生才可离开考场。
◆ 本试卷版权所有,任何单位或个人不得复制、出版和存留,违者必究◆
重庆市教育委员会 2008年4月
200801 C语言笔试试题(A) 第1 页,共9 页
二级C语言笔试试卷(A)
(共100分)
注意事项:1.一题答案填涂在答题卡上
2.二、三、四、五题答案做在答题纸上 一.单项选择题。(每小题1分,共20分)
1. C程序的源程序由预处理命令和( )组成。
(A)函数 (B)语句 (C)保留字 (D)标始符 2. 下面程序段中,与if(x%2)中的x%2所表示条件等价的是( )。 scanf(〞%d〞,&x);
(A)x%2==0 (B)x%2!=1 (C) x%2!=0 (D) x%2==1 3. 执行下面C语言序列后,变量b的值是( )。 Int a,b,c; a=b=c=1; ++a||++b&&++c;
(A)错误 (B)0 (C) 2 (D) 1 4. 设有C语句int a[3][4];, 则每次移动过a数组一行元素的指针变量定义形式是( )。 (A)int *p; (B)int **p; (C) int(*p)[4]; (D) int *p[4]; 5. 设有整型变量a, 实型变量f,双精度型变量x,则表达式10+′b′+x*f值的类型为( )。 (A)int (B)float (C)double (D)不能确定
6. C语言中规定,函数调用中用简单变量做实参时,它和对应形参之间的数据传递方式是( )。 (A)地址传递 (B)单向值传递
(C) 由实参传给形参,再由形参传回给实参 (D) 由用户指定传递方式 7. 下面程序的输出是( )。 #include
int x=10,y=3;
printf(〞%d\\n〞,y=x/y);
}
(A)0 (B)1 (C) 3 (D) 不确定的值 8. 执行下面的程序段后,B的值为( )。 int x=35;
char z=′A′; int B;
B=((X&5)&&(z<′a′));
(A)0 (B)1 (C)2 (D) 3 9. 以下程序的输出结果为( )。 #include
if(i++==5) break;
printf(〞%d\\n〞,i); }
200801 C语言笔试试题(A) 第2 页,共9 页
(A)0 (B)5 (C) 6 (D) 前3个选项都错 10. 已知:char s[4]=〞cba〞;char *p; 执行语句列p=s;printf(〞%c\\n〞,*p+1);后,其输出为( )。
(A)c (B)b (C) a (D) d 11. 运行完下列程序后,在屏幕上的内容是( )。 #include
printf(〞%d\\n〞,a); }
(A)0 (B)6 (C) 12 (D) 24
12. 已知:int x= 1 , y = 2, z =0,则执行z=x>y?(10+x,10-x):(20+y,20-y)后,z的值为( )。 (A)11 (B)9 (C) 18 (D) 22 13. 若已定义x和y为double类型,则表达式x=2,y=x+10/4的值是( ) (A)2 (B)4 (C)4.0 (D) 4.5 14. 以下程序的输出结果是( )。 #include
{ int x=0; x+=y++;
printf(〞%d〞,x); }
(A)3 (B)4 (C)5 (D) 6 15. 在下面C语言的函数说明语句中,正确的是( )。
(A)int fun(int x, int y); (B)int fun(int x,y);
(C) int fun(x,y); (D) int fun(int x; int y); 16. 有定义:int x,y=10,*p=&y;, 则能使得x的值也等于10的语句是( )。 (A)x=p; (B)x=&p; (C)x=&y; (D) x=*p; 17. 有定义: int a[5][4], (*p)[4]=a;, 则*(*(p+2)+3)等价于( )。 (A)a[2][0] (B)a[2][1] (C) a[2][2] (D) a[2][3] 18. 有定义:char* s=〞\\t\\〞Name\\\\Address\\〞〞;, 那么strlen(s)等于( )。 (A)15 (B)16 (C) 17 (D) 18 19.设有定义int m=1,n=-1;则执行语句printf(〞%d\\n〞,(m--&&++n));后的输出结果是()。 (A)-1 (B)0 (C) 1 (D) 2
20. 设有C语句:struct T{int n; double x;}d,*p;, 若要使p指向结构体变量中的成员n,正确的赋值语句是( )。 (A)p=&d.n (B)*p=d.n
(C) p=(struct T *)&d.n (D) p=(struct T *)d.n
二. 基本概念选择填空题(本大题后面有若干备选项,请选择合适的备选项并将其号码填入各个小题的空白处。没空2分,共10分)
1.一个C程序无论由多少个函数组成,只能有一个主函数,其函数名是 ① 。
200801 C语言笔试试题(A) 第3 页,共9 页
2.表达式x*=x+b等价于表达式 ② 。
3.在C语言中, ③ 语句是一条限定转移语句,其功能是提前结束本次循环体的执行过程而直接进入下一次循环。
4.结构体数据类型仍然是一类变量的抽象形式,系统不会为数据类型分配存储空间。要使用结构体类型数据,必须要 ④ 。
5.调用feof库函数可以判断文件内部读写位置指针是否达到文件尾,当读写位置指针到达文件尾时,该函数的返回值是: ⑤ 。
备选项:
(A)void (B)x=x*x+b (C)continue (D)x=x*(x+b) (E)break (F)定义结构体成员 (G)定义结构体类型变量 (H)定义联合体类型变量 (I)0 (J)非0 (K)main (L)goto 三.程序填空题。(每空2分,共20分)。 1. 程序的功能是:统计输入字符串中小写字母的个数。 #include
int num=0;
while((c=getchar())!= ① ) { if(c<′a′‖c>′z′) continue; ② }
printf(〞%d\\n〞,num);
}
2. 下面程序的功能是输出数组中的各字符串,请填空完成程序。 #include
{ char*a[]={〞abcd〞,〞12345〞,〞efghijk〞,〞67890〞}; int j=0;
for(; ③ ;j++) puts( ④ ); }
3. 下面程序实现计算1+(1+2)+(1+2+3)+??+(1+2+3+??+10),请填空完善程序。 #include
{ int total,sum,m,n; total=0;
for(m=1;m<=10;m++) { sum=0;
for(n=1; ⑤ ;n++) sum=sum+n; ⑥ ;
200801 C语言笔试试题(A) 第4 页,共9 页
}
printf(〞total=%d\\n〞,total); }
4. 函数fun的功能是判断一个3位整数的各位数和百位数之和是否等于其十位上的数字,是则返回〞yes!〞,否则返回〞no!〞,请填空完成函数。 #include
⑦ fun(int n) { int g,s,b; g=n; s=n/10; b=n/100; if((g+b)==s) return〞yes〞; else
return ⑧ ;
}
void main() { int n;
scanf(〞%d〞,&n); printf(〞%s\\n〞,fun(n)); }
5. 下面程序的功能是打印出整数1~1000中满足条件:〞个位数字的立方等于其本身〞的所有数,请填空完成程序。 #include
{ int n;
for(i=1;i<1000;i++)
{ g= ⑨ ; if( ⑩ )
printf(〞M〞,i); }
printf(〞\\n〞);
}
四. 阅读程序,填写结果(每小题5分,共30分) 1. 下列程序的运行结果是( )。 #include
{ void add(); int i;
for(i=0;i<3;i++) add() }
void add()
{ static int x=0;
200801 C语言笔试试题(A) 第5 页,共9 页