全国高等学校非计算机专业计算机等级考试二级C语言笔试试题(A卷)考试时间:2008年4月26日上午9:00——11:00考生必读:1.考生应严格遵守考场规则。
考生拿到试卷后应首先将自己的所在学校名称、考场地点、性命、准考证号填涂在答题纸和答题卡规定的位置上。
2. 考生得到监考人员指令后方可作答。
3.考生在答题前务必认真阅读题目要求,按要求作答。
客观题的答案(选择题和判断题)必须用2B铅笔填涂在答题卡的相应位置上;主观题的答案必须用蓝、黑色钢笔或圆珠笔填写在答题纸的相应位置上;且必须注明试卷类型(A 卷或B卷)。
否则答案无效。
4.注意字迹清楚,保持卷面整洁。
5. 考试时间为120分钟。
考试结束时,把试题册、答题卡、答题纸放在桌上,不得带走。
等监考人员收齐点清后,考生才可离开考场。
◆本试卷版权所有,任何单位或个人不得复制、出版和存留,违者必究◆重庆市教育委员会2008年4月二级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==13. 执行下面C语言序列后,变量b的值是()。
Int a,b,c; a=b=c=1; ++a||++b&&++c;(A)错误(B)0 (C) 2 (D) 14. 设有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<stdio.h>void main(){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) 39. 以下程序的输出结果为()。
#include<stdio.h>void main(){ int i=0;for(;;)if(i++==5)break;printf(〞%d\n〞,i);}(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) d11. 运行完下列程序后,在屏幕上的内容是()。
#include<stdio.h>void main(){ int a=0;a+=a=12;printf(〞%d\n〞,a);}(A)0(B)6 (C) 12 (D) 2412. 已知: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) 2213. 若已定义x和y为double类型,则表达式x=2,y=x+10/4的值是()(A)2(B)4 (C)4.0 (D) 4.514. 以下程序的输出结果是()。
#include<stdio.h>int x=3,y=4;void main(){ int x=0;x+=y++;printf(〞%d〞,x);}(A)3 (B)4 (C)5 (D) 615. 在下面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) 1819.设有定义int m=1,n=-1;则执行语句printf(〞%d\n〞,(m--&&++n));后的输出结果是()。
(A)-1 (B)0 (C) 1 (D) 220. 设有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程序无论由多少个函数组成,只能有一个主函数,其函数名是①。
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<stdio.h>void main(){ char c;int num=0;while((c=getchar())!= ① ){ if(c<′a′‖c>′z′)continue;②}printf(〞%d\n〞,num);}2. 下面程序的功能是输出数组中的各字符串,请填空完成程序。
#include<stdio.h>void main(){ char*a[]={〞abcd〞,〞12345〞,〞efghijk〞,〞67890〞};int j=0;for(; ③ ;j++)puts( ④ );}3. 下面程序实现计算1+(1+2)+(1+2+3)+……+(1+2+3+……+10),请填空完善程序。
#include<stdio.h>void main(){ int total,sum,m,n;total=0;for(m=1;m<=10;m++){ sum=0;for(n=1; ⑤ ;n++)sum=sum+n;⑥ ;}printf(〞total=%d\n〞,total);}4. 函数fun的功能是判断一个3位整数的各位数和百位数之和是否等于其十位上的数字,是则返回〞yes!〞,否则返回〞no!〞,请填空完成函数。
#include<stdio.h>⑦ fun(int n){ int g,s,b;g=n%10;s=n/10%10;b=n/100;if((g+b)==s)return〞yes〞;elsereturn ⑧ ;}void main(){ int n;scanf(〞%d〞,&n);printf(〞%s\n〞,fun(n));}5. 下面程序的功能是打印出整数1~1000中满足条件:〞个位数字的立方等于其本身〞的所有数,请填空完成程序。
#include<stdio.h>void main(){ int n;for(i=1;i<1000;i++){ g= ⑨ ;if( ⑩ )printf(〞%4d〞,i);}printf(〞\n〞);}四. 阅读程序,填写结果(每小题5分,共30分)1. 下列程序的运行结果是()。
#include<stdio.h>void main(){ void add();int i;for(i=0;i<3;i++)add()}void add(){ static int x=0;x++;printf(〞%d〞,x);}2. 以下程序的输出结果为()。
#include<stdio.h>void main(){ int a,b,c,x;a=b=c=0;x=35;if(!a)x--;else if(b);if(c)x=3;elsex=4printf(〞%d\n〞,x);}3. 以下程序的输出结果为()。
#include<stdio.h>void main(){ int i,j,row,colum,max;int a[3][4]={1,2,3,4,9,8,7,6,-10,10,-5,2};max=a[0][0];for(i=0;i<=2;i++)for(j=0;j<=3;j++)if(a[i][j]>max){ max=a[i][j];row=i;colum=j;}printf(〞max=%d,row=%d,colum=%d\n〞,max,row,colum);}4. 下面程序的执行结果是()。
#include<stdio.h>#define Min(x,y) (x)<(y)?(x):(y)void main(){ int a=1,b=2,c=3,d=4,t;t=Min(a+b,c+d)*1000;printf(〞t=%d\n〞,t);}5. 下列程序的运行结果是()。