C语言模拟试题
- 格式:doc
- 大小:161.00 KB
- 文档页数:10
二级C语言笔试试卷(A) 注意事项: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 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) 3 9. 以下程序的输出结果为( )。 #include 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) d 11. 运行完下列程序后,在屏幕上的内容是( )。 #include void main() { int a=0; a+=a=12; 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=3,y=4; void main() { 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程序无论由多少个函数组成,只能有一个主函数,其函数名是 ① 。 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 void main() { char c; int num=0; while((c=getchar())!= ① ) { if(c<′a′‖c>′z′) continue; ② } printf(〞%d\n〞,num); } 2. 下面程序的功能是输出数组中的各字符串,请填空完成程序。 #include 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 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 ⑦ fun(int n) { int g,s,b; g=n%10; s=n/10%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 void main() { int n; for(i=1;i<1000;i++) { g= ⑨ ; if( ⑩ ) printf(〞%4d〞,i); } printf(〞\n〞); } 四. 阅读程序,填写结果(每小题5分,共30分) 1. 下列程序的运行结果是( )。 #include 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 void main() { int a,b,c,x; a=b=c=0; x=35; if(!a) x--; else if(b) ; if(c) x=3; else x=4 printf(〞%d\n〞,x); } 3. 以下程序的输出结果为( )。 #include 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(〞