![]() ![]() |
|
计算机等级考试二级C语言考前密卷(8) | |
作者:佚名 文章来源:不详 点击数 更新时间:2008/4/18 14:12:05 文章录入:杜斌 责任编辑:杜斌 | |
|
|
一、选择题 (1)下列数据结构中,按先进后出原则组织数据的是
(21)若int k=8;则执行下列程序后,变量k的正确结果是 main() {int k=8; switch(k) {case 9:k+=1; case 10:k+=1; case 11:k+=1;break; default:k+=1;} printf("%d\n",k);} A)12 B)11 C)10 D)9 (22)若int i,j;,则for(i=j=0;i<10&&j<8;i++,j+=3)控制的循环体执行的次数是 A)9 B)8 C)3 D)2 (23)下列程序的输出结果是 #include "stdio.h" main() { int i=6; while(i--) printf("%d",--i); printf("\n");} A)531 B)420 C)654321 D)死循环 (24)阅读下列程序,则执行结果是 #include "stdio.h" main() {int a=0,b=0,c=0,i; for(i=0;i<4;i++) switch(i) {case 0:a=i++; case 1:b=i++; case 2:c=i++; case 3:i++;} printf("%d,%d,%d,%d\n",a,b,c,i);} A)0,1,3,4 B)1,2,3,4 C)0,1,2,5 D)0,2,3,4 (25)下面程序的运行结果是 #include "stdio.h" main() {int j,i,k=0; for(j=50;j<=60;j++) {if(!(k))printf("\n"); for(i=2;i k++;}}} A)5359 B)5953 C)3595 D)9535 (26)已知char ch=′C′;则以下表达式的值是 ch=(ch>=′A′ && ch<=′Z′)?(ch+32):ch; A)A B)a C)Z D)c (27)以下描述错误的是 A)C程序中,函数可以直接或间接的调用自己 B)函数调用时,函数名必须与所调用的函数名字完全一致 C)函数说明语句中的类型必须与函数返回值的类型一致 D)实参数可以与形参个数不一致 (28)阅读下面程序,则执行后的结果为 #include "stdio.h" main() {fun3(fun1(),fun2());} fun1() { int k=20; return k;} fun2() { int a=15; return a;} fun3(int a,int b) {int k; k=(a-b)*(a+b); printf("%d\n",k);} A)0 B)184 C)175 D)编译不通过 (29)阅读下面程序,则执行后的输出结果为 #include "stdio.h" fun(int a,int b) {int s; s=a*b/2; printf("%d\n",s);} main() {int a=10,b=16; fun(a,b);} A)10 B)16 C)160 D)80 (30)阅读下面程序,则程序执行后的结果为 #include "stdio.h" main() {int a=4,b=6,c=7; double d,fun(int,int,int); d=fun(a,b,c); printf("%lf\n",d);} double fun(int a,int b,int c) {double s; s=a%b*c; return s;} A)27 B)27.000000 C)28 D)28.000000 (31)下列不合法的指针变量的定义是 A)int *_k; B)char *_245; C)int *p; D)double *5_is (32)下列关于指针变量赋空值的说法错误的是 A)当赋空值的时候,变量指向地址为0的存储单元 B)赋值语句可以表达为变量名=′\0′; C)赋值语句可以表达为变量名=0; D)一个指针变量可以被赋空值 (33)阅读下面程序,则执行后输出的结果为 #include "stdio.h" void fun(int *a,int *b) {int m; m=(*a+*b)*(*a+*b); m+=(*a-*b)*(*a-*b); printf("%d\n",m);} main() { int a=5,b=6,*x=&a,*y=&b; fun(x,y);} A)120 B)121 C)122 D)123 (34)阅读下面程序,则输出结果是 #include "stdio.h" void fun(int *a,int *b) {int c=20,d=25; *a=c/3; *b=d/5;} main() { int a=3,b=5; fun(&a,&b); printf("%d,%d\n",a,b);} A)6,5 B)5,6 C)20,25 D)3,5 (35)以下对一维数组c进行正确的定义初始化的语句是 A)int c[10]=0; B)int c[10]={0}*10; C)int c[1]={0,0,0,0,0,0,0}; D)int c[10]={0};
(36)以下二维数组c的定义形式是 A)int c[3][] B)float c[3,4] C)double c[3][4] D)float c(3)(4) (37)阅读下列程序,则执行后输出的结果是 #include "stdio.h" int k=1; main() {fun(k); printf("%d\n",k);} fun(int k) { k++; k=k*6;} A)1 B)2 C)6 D)12 (38)已知#define M 2;的宏定义,执行语句k=M*5;后,k的值是 A)10 B)5 C)2 D)以上答案都不对 (39)已知:int c[3][4];则对数组元素引用正确的是 A)c[1][4] B)c[1.5][0] C)c[1+0][0] D)以上表达都错误 (40)现有如下程序段 #include "stdio.h" void fun(int *a,int *b,int *c) {*c=*a+*b;} main() {int a[2]={12,23},c; fun(a,a+1,&c); printf("%d\n",c);} 则程序的输出结果为 A)23 B)12 C)0 D)35 (41)若有以下语句,则正确的描述是 char a[]="toyou"; char b[]={′t′,′o′,′y′,′o′,′u′}; A)a数组和b数组的长度相同 B)a数组长度小于b数组长度 C)a数组长度大于b数组长度 D)a数组等价于b数组 (42)已知:char a[15],b[15]={"I love china"};则在程序中能将字符串I love china赋给数组a的正确语句是 A)a="I love china"; B)strcpy(b,a); C)a=b; D)strcpy(a,b); (44)阅读下面程序,则执行后的结果为 #include "stdio.h" main() { char *str="abcdefghijklmnopq"; while(*str++!=′e′); printf("%c\n",*str);} A)f B)a C)e D)q (45)现有如下程序段 #include "stdio.h" int fun(int k,int *m) {if(k%3)*m=k*k; else *m=k/3;} main() { int (*p)(int,int *),m; p=fun; (*p)(78,&m); printf("%d\n",m);} 则程序段的输出结果为 A)24 B)25 C)26 D)27 (46)阅读下列程序,则执行后的输出结果为 #include "stdio.h" fun(int x) {if(x/2>0)fun(x/2); printf("%d",x%2);} main() { fun(20); putchar(′\n′);} A)11100 B)10100 C)10101 D)10110 (47)阅读如下程序段,则执行后程序的输出结果是 #include main() {structa{int x; int y;}num[2]={{20,5},{6,7}}; printf("%d\n",num[0].x/num[0].y*num[1].y);} A)0 B)28 C)20 D)5 (48)阅读程序段,则执行后的输出结果为 #include "stdio.h" typedef union{ long x[2]; int y[4]; char z[8];} atx; typedef struct aa{ long x[2]; int y[4]; char z[8]; } stx; main() {printf("union=%d,struct aa=%d\n",sizeof(atx),sizeof(stx));} A)union=8,struct aa=8 B)union=8,struct aa=24 C)union=24,struct aa=8 D)union=24,struct aa=24 (49)阅读下列程序段 #include "stdio.h" typedef struct aa { int a; struct aa *next; } M; void set(M *k,int i,int *b) { int j,d=0; for(j=1;j { k[j-1].next=&k[j]; k[j-1].a=b[d++]; } k[j].a=b[d]; } main() { M k[5],*p; int d[5]={23,34,45,56,67}; set(k,5,d); p=k+1; printf("%d\n",table); } 则下面的表达式在table处,能使程序执行后,打印输出数据45的是 A)p->next->a B)++p->a C)(*p).a++ D)p++->a (50)阅读下面程序,程序实现的功能是(a123.txt在当前盘符下已经存在) #include "stdio.h" void main() {FILE *fp; int a[10],*p=a; fp=fopen("a123.txt","w"); while( strlen(gets(p))>0 ) { fputs(a,fp); fputs("\n",fp);} fclose(fp);} A)从键盘输入若干行字符,按行号倒序写入文本文件a123.txt中 B)从键盘输入若干行字符,取前2行写入文本文件a123.txt中 C)从键盘输入若干行字符,第一行写入文本文件a123.txt中 D)从键盘输入若干行字符,依次写入文本文件a123.txt中
二、填空题 |
|
![]() ![]() |