《C语言精编100题》由会员分享,可在线阅读,更多相关《C语言精编100题(25页珍藏版)》请在金锄头文库上搜索。
1、C 语言精编 100 题一、单选题一、单选题1.(1) 由 C 语言编写的代码程序( )A. 可直接执行B. 是一个源程序C. 经过编译即可执行 D. 经过编译解释才能执行(2) C 语言源程序的扩展名为( )A. .objB. .c C. .exeD. .cpp2.(1) 按照 C 语言规定的用户标识符命名规则,不能出现在标识符中的是( )A. 大写字母 B. 中划线 C. 数字字符 D. 下划线(2) 下列选项中,不能用作标识符的是( )A. _1234_ B. _1_2 C. int_2_ D. 2_int_(3) 以下选项中合法的用户标识符是( )A. long B. _2Test C
2、. 3Dmax D. A.dat(4) 以下不能定义为用户标识符的是( )A. MainB. _0C. _intD. sizeof(5) 下列定义变量的语句错误的是( )A. int _int; B. double int_; C. char For; D. float US$;(6) 以下选项中不合法的标识符是( )A. print B. FOR C. &a D. _00(7) 以下不合法的用户标识符是( )Aj2_KEY B. Double C. 4d D. _8_(8) 以下 C 语言用户标识符,不合法的是( )A. _1B. AaBcC. a_bD. a-b3.(1) 在 C 语言中,
3、整型数据分为( )A. 二进制、八进制、十进制B. 二进制、十进制、十六进制C. 八进制、十进制、十六进制D. 二进制、八进制、十进制、十六进制(2) C 源程序不能表示的进制为( )A. 八进制B. 二进制C. 十六进制D. 十进制4.(1) 在 C 语言中,合法的实型常数是( )A. 5E2.0 B. E-3 C. .2E0 D. 1.3E(2) 在 C 语言中,合法的实型常数是( )A. 1.2E0.5B. 3.14159EC. 5E-3D. E15(3) 以下选项中,不能作为合法常量的是( )A. 1.234e04B. 1.234e0.4C. 1.234e+4D. 1.234e0(4)
4、 以下不合法的数值常量是( )A. 011 B. le1 C. 8.0E0.5 D. 0xabcd(5) 以下选项中,能用作数据常量的是( )A. o115B. 0118C. 1.5e1.5D. 115(6) 以下选项中,合法的一组 C 语言数值常量是( )A. 028B. 12.C. .177D. 0x8A.5e-3 OXa23 4e1.5 10,000-0xf 4.5e0 Oabc 3.e55.(1) 在 C 语言中,非法的字符常量是( )A.t B.17 C. n D.xaa(2) 以下不合法的字符常量是( )A.018 B. C. D.xcc(3) 以下选项不属于字符常量的是( )A.
5、 C B. C C. xCC D. 072(4) 以下选项中,非法的字符常量是A.101 B.65 C.xff D.0196.在 C 语言中,以下关于运算符叙述错误的是( ) A. 在 C 语言中,逗号运算符的优先级最低B. 在 C 语言中,赋值运算符自右向左运算C. 在 C 语言中,+、-、*、/、%是算术运算符,可用于整型和实型数的运算D. 在 C 语言中,+、-运算符可以改变变量的值7.下列运算符中优先级最高的运算符是( )( )A. =8.(1) 以下程序的输出结果是( )main() int a=3,b=4; printf(%dn,a=b); A. 3B. 4C. 1D. 0(2)
6、在 C 语言中,表达式 10!=9 的值为( )A. 0B. FalseC. 1D. True9.在 C 语言中,以下非法的表达式是( )A. 0=x0;D. k=i=j;11. (1) 表达式 3.6-5/2+1.2+5%2 的值是( )A. 4.3 B. 4.8 C. 3.3 D. 3.8(2) 若有定义语句:int x=12,y=8,z;,在其后执行语句 z=0.9+x/y;,则 z 的值为( )A. 1.9B. 1C. 2 D. 2.412. (1) 设有语句:int a=3;则执行了语句 a+=a-=a*a;变量 a 的值是( )A. 3 B. 0 C. 9 D. -12(2) 设有
7、语句:int x=10;则执行了语句 x+=x-=x-x;变量 x 的值是( )A. 10 B. 20 C. 40 D. 30 (3) 设有语句:int a=0;则执行语句 a+=(a=8);变量 a 的值是( )A. 0B. 8C. 16D. 2413. 以下程序的输出结果是( )( )( )( )( ) main() int i=10,j=1;printf(%d,%dn,i-,+j);A. 9,2 B. 10,2 C. 9,1 D. 10,1 main() int a=12,b=12;printf(%d %dn ,-a,+b);A. 10 10 B. 12 12 C. 11 10 D. 1
8、1 13 main() int x=023; printf(%dn,-x);A. 17 B. 18 C. 23 D. 24 main() int x=10,y=10;printf(%d %dn,x-,-y);A. 10 10 B. 9 9 C. 9 10 D. 10 9 main() int i=010,j=10; printf(%d,%dn,+i,j-); A. 11,10 B. 9,10 C. 010,9 D. 10,914. 以下程序的输出结果是( )main() int x=100,y=200;printf(%dn,(x,y); A. 200 B. 100C. 100 200 D)20
9、0 10015. 以下程序的输出结果是( )main() int x=10,y=3,z;printf(%dn,z=(x%y,x/y); A. 1 B. 0 C. 4 D. 316. int k=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是( )A. k+ B. k+=1 C. +k D. k+117. 以下程序的输出结果是( )main() int x,y,z;x=y=1;z=x+,y+,+y;printf(%d,%d,%dn,x,y,z); A. 2,3,3 B. 2,3,2 C. 2,3,1 D. 2,2,118. 设 x、y、t 均为 int 型变量,则执行语句:x=y=3
10、;t=+x|+y;后,y 的值为( )A. 1B. 2C. 3D. 419. 设 int x=-1;执行表达式+x|+x|+x|+x,x 的值是( )A. 0B. 1C. 2D. 420. 以下程序的输出结果是(1) main() int k=11; printf(k=%d,k=%o,k=%xn,k,k,k);( )A. k=11,k=12,k=11 B. k=11,k=13,k=13 C. k=11,k=013,k=0xb D. k=11,k=13,k=b(2) main() int k=17; printf(%d,%o,%xn,k,k,k); ( )A. 17,021,0x11 B. 17
11、,17,17 C. 17,0x11,021 D. 17,21,1121. 运行时从键盘上输入 9876543210(表示回车),则该程序的输出结果是( ) main() int a;float b,c; scanf(%2d%3f%4f,&a,&b,&c);printf(a=%d,b=%f,c=%fn,a,b,c); A. a=98,b=765,c=4321 B. a=10,b=432,c=8765 C. a=98,b=765.000000,c=4321.000000 D. a=98,b=765.0,c=4321.022. (1) 设变量均已正确定义,若要通过 scanf(%d%c%d%c,&a
12、1,&c1,&a2,&c2);语句为变量a1 和 a2 赋数值 10 和 20,为变量 c1 和 c2 赋字符 X 和 Y。以下所示的输入形式中正确的是(注:代表空格字符)( ) A. 10X20Y B. 10X20YC. 10X D. 10X 20Y 20Y(2) 若有定义:int a,b;,通过语句 scanf(%d,%d,&a,&b);,能把整数 3 赋给变量 a,5 赋给变量 b 的输入数据是( )A. 3 5 B. 3,5 C. 3;5 D. 3523. 以下程序的输出结果是 #define MA(x) x*(x-1) main() int a=1,b=2;printf(%dn,MA
13、(1+a+b); A. 6 B. 8 C. 10 D. 1224. 以下程序的输出结果是( ) #define M(x,y,z) x*y+z main() int a=1,b=2,c=3;printf(%dn,M(a+b,b+c,c+a); A. 19 B. 17 C. 15 D. 1225. 以下程序段的输出结果是( ) #define MIN(x,y) (x)(y)?(x):(y) main() int i=10,j=15,k;k=10*MIN(i,j);printf(%dn,k); A. 15 B. 100 C. 10 D. 15026. 设 a=1,b=2,c=3,d=4,则表达式 a
14、b?a:cy) if(y5) printf(%dn,x); else printf(%dn,x-); A. 4B. 5C. 6D. 729. 以下程序段的输出结果是( )main() int x=1,y=0,a=0,b=0; switch(x) case 1:switch(y) case 0:a+;break; case 1:b+;break; case 2:a+;b+;break; case 3:a+;b+; printf(a=%d,b=%dn,a,b); A. a=1,b=0B. a=2,b=2C. a=1,b=1D. a=2,b=130. (1) 有以下程序main() int n=4;
15、 while(n-) printf(%d ,-n); 程序执行后的输出结果是( ) A. 2 0 B. 3 1 C. 3 2 1 D. 2 1 0(2) 有以下程序 main() int y=10; while(y-); printf(y=%dn,y); 程序执行后的输出结果是( ) A. y=0 B. y=-1C. y=1 D. while 构成无限循环31. 有以下程序main() int i; for(i=0;ibc; printf(%dn,x); (2) 以下程序运行后的输出结果是 。main() int a=3,b=2; b=a3; printf(%d,%d)n,a,b); (3)
16、以下程序运行后的输出结果是 。main() int a,b,c=246; a=c/100%9; b=-1&-1; printf(%d,%dn,a,b); (4) 以下程序运行后的输出结果是 。main() int a,b,c; a=10;b=20;c=(a%b1); printf(%d,%d,%dn,a,b,c); 60. (1) 以下程序运行后的输出结果是 。 #define MAX(x,y) (x)(y)?(x):(y) main() int a=5,b=2,c=3,d=3,t;t=MAX(a+b,c+d)*10;printf(%dn,t);(2) 以下程序运行后的输出结果是 。#defi
17、ne S(x) 4*x*x+1main() int i=6,j=8; printf(%dn,S(i+j); (3) 以下程序运行后的输出结果是 。#define ADD(x) x+xmain() int a=2,b=1,c=3;printf(%dn,c*ADD(a+b);61. (1) 以下程序运行后的输出结果是 。main() int x,a=1,b=2,c=3,d=4;x=(ab)?a:b;x=(xc)?x:c;x=(xd)?x:d;printf(%dn,x); (2) 以下程序运行后的输出结果是 。main() int x=1,y=2; (x=y)?+x:-x; printf(%dn,x
18、); (3) 以下程序运行后的输出结果是 。main() int x=10,y=10; int a,b,c; a=-x=y?+y:-x; b=x+; c=y; printf(%d %d %dn,a,b,c); 62. 以下程序运行后的输出结果是 。main() int a=3,b=4,c=5,t=99;if(ba&ac) t=a;a=c;c=t;if(ac&b=0;i-) t*=i; printf(%dn,t); (2) 以下程序运行后的输出结果是 。main() char c1,c2; for(c1=0,c2=9;c1c2;c1+,c2-) printf(%c%c,c1,c2); print
19、f(n); (3) 1234567890,则其中 while 循环体将执行 次。include main() char ch; while(ch=getchar()=0) printf(#); (4) 以下程序运行后的输出结果是 。main() int x=7; do printf(*); x-; while(!(x%2); 64. (1) 设有定义语句:int a3=0,1,2;则数组元素 a12的值为 。(2) int a33=1,2,3;则 a20的值为 。65. 在 C 语言中,有如下语句: int a=10,20,30,40,50,60,*p; p=a+3; printf(%dn,*
20、p+);则输出结果是 。66. 以下程序运行后的输出结果是 。main() int a23=1,2,3,4,5,6; int m,*p; p=&a00; m=(*p)*(*(p+2)*(*(p+4); printf(%dn,m); 67. 设有以下定义和语句:int a32=10,20,30,40,50,60,(*p)2;p=a;则*(*(p+2)+1)的值为 。68. 在 C 语言中,有如下语句: int a32=1,2,3,4,5,6,*p3;p0=a1;则*(p0+1)所代表的数组元素是 。69. (1) 以下程序运行后的输出结果是 。main() char s=abcdef; s3=0
21、; printf(%sn,s); (2) 以下程序运行后的输出结果是 。main() char s=ABCD,*p=s; printf(%dn,*(p+4); 70. (1) 以下程序运行后的输出结果是 。main() char str=tabn012; printf(%dn,strlen(str); (2) 以下程序运行后的输出结果是 。main() printf(%dn,strlen(IBMn0121); (3) 以下程序运行后的输出结果是 。main() printf(%dn,strlen(t065xffn); (4) 以下程序运行后的输出结果是 。main() char s=stop0
22、n; printf(%dn,strlen(s) (5) 以下程序运行后的输出结果是 。main() char str=Beijing; printf(%dn,strlen(strcpy(str,China); (6) 以下程序运行后的输出结果是 。main() char *s1=12345,*s2=1234; printf(%dn,strlen(strcat(s1,s2); 71. (1) 以下程序运行后的输出结果是 。main() char a=1,2,3,4,0;printf(%d %dn,sizeof(a),strlen(a); (2) 以下程序运行后的输出结果是 。 main() ch
23、ar p=abc,q=a, b ,c; printf(%d,%dn,sizeof(p),sizeof(q);72. 以下程序运行后的输出结果是 。main() char ch35=AAAA,BBB,CC; printf(%sn,ch1); 73. 以下程序运行后的输出结果是 。main() char str20=China,Beijing,*p=str; printf(%sn,p+20); 74. (1)在 C 语言中,有如下语句: struct std char ch; int a2; float t; double f; std1;则结构体变量 std1 占用内存的字节数为 。(2) 在
24、C 语言中,有如下语句: struct dog char ch10; int i; int *p; double k; dog1;则结构体变量 dog1 占用内存的字节数为 。(3)在 C 语言中,有如下语句: struct cat int a10; char ch; float f; double *p; cat1;则结构体变量 cat1 占用内存的字节数为 。(4) 有以下结构体说明,请填空,以完成对结构体数组 t 定义:struct STR char a;int b;float c;double d; ; t20;三、多选题三、多选题75. 在 C 语言中,以下合法的变量名是( )A.
25、registerB. _10daysC. my_bookD. us$E. count76. 在 C 语言中,以下合法的实型常量是( )A. 1.2E+0.5B. 3.14159EC. .5E-3D. E15E. 3.E+277. 在 C 语言中,变量已正确定义并赋值,下面正确的表达式为( )A. a=b+1B. b=float(a)C. a=a+7=c+3D. c=15.0%3E. a=b+c,a+78. 在 C 语言中,以下合法的字符常量是( )A. n B. abC. x43D. 084E. 079. 在 C 语言中,以下合法的常量是( ) A. 0386B. 0XffC. 1.2e0.5
26、D. 17E. 080. 在 C 语言中,以下叙述正确的是( )A. C 程序的基本单位是函数B. C 程序每行只能写一条语句C. 简单的 C 语句必须以分号结束D. C 语句必须在一行内写完E. C 程序的最小的单位是语句81. 在 C 语言中,以下错误的数组定义是( )A. int a=1,2,3;B. int s;C. int n=10,tn;D. char *q3;E. char str=1,2,3;82. int a10;则对 a 数组元素或地址的引用错误的是( )A. &a5 B. a2C. a+D. *aE. a10四、程序填空题四、程序填空题83. 阅读以下程序并填空。以下程序
27、的功能是:计算:1-2+3-4+99-100。#include main() int i=1,j=1,s=0; while( ) s+= ; i+; ; printf(The result:%dn,s); 84. 阅读以下程序并填空。该程序的功能是:222131211nt#include main() int j,n; double t=1.0; printf(Please input n:n); scanf( ); for( ;j=n;j+) ; printf(Result:%lfn,t); 85. 阅读以下程序并填空。该程序的功能是:计算 10 名学生成绩的平均分。#include #de
28、fine N 10main() int i; float aver,arrayN,sum=0.0; printf(input 10 scores:n); for(i=0; ;i+) scanf(%f,&arrayi); sum= ; aver= ; printf(average scores is %5.2fn,aver); 86. 阅读以下程序并填空。以下程序的功能是:输入 10 个整数到一维数组,输出其中最大数和最小数。#include main() int a10,i,max,min; for(i=0;i10;i+) scanf(%d,&ai); max=min= ; for(i=1;i
29、max) ;else if( ) min=ai; printf(max=%d,min=%dn,max,min); 87. 阅读以下程序并填空。以下程序的功能是:输入一个字符串 st,将其倒序后输出。#include main() int i,j; char st60,ch; scanf(%s,st); for(i=0,j= ; ;i+,j-) ch=sti; ; stj=ch; printf(%sn,st); 88. 阅读以下程序并填空。以下程序的功能是:计算,求 n 的最大值。1003212222ns#include main() int i=0,s=0; do i+; s+= ; whil
30、e( ); printf(The max n is:%dn, ); 89. 阅读以下程序并填空。以下程序的功能是:输入字符串,将其中的非数字字符删除后,输出整个字符串。main() char st80; int i=0,j=0; scanf(%s,st); while(sti) if( ) st =sti; i+; ;printf(%sn,st); 90. 阅读以下程序并填空。该程序的功能是:将字符串中大写字母改成小写字母。#include main() int i=0; char str80; scanf( ,str); while(i=A&stri=Z) stri= ; ; printf(
31、%sn,str); 91. 阅读以下程序并填空。以下程序的功能是:输出方阵中主对角线和、副对角线上元素的和 sum1 和sum2。#define N 3main() int aNN,i,j,sum1,sum2; sum1=sum2= ; for(i=0;iN;i+) for(j=0;jN;j+) scanf(%d,&aij); for(i=0;iN;i+) sum1+= ; sum2+= ; printf(sum1=%d,sum2=%dn,sum1,sum2); 五、读程序写结果五、读程序写结果92. 以下程序运行后的输出结果是 。main() int a=3,b=4,c=5,d=2; if(
32、ab) if(bc) printf(%d,d+1); else printf(%d,+d+1); printf(%dn,d); 93. 写出程序的运行结果#include main() int k=6,n=0; while(k0) switch(-k) case 1:n+=k; case 2: case 3:n+=k; default:break; k-; printf(%d,n);输出结果为: 94. (1) 以下程序运行后的输出结果是 。main() int i=1; while(i=15) if(+i%3!=2) continue; else printf(%d,i); printf(n
33、); (2) 以下程序运行后的输出结果是 。 main() int i,j,x=0; for(i=0;i2;i+) x+; for(j=0;j3;j+) if(j%2) continue; x+; x+; printf(x=%dn,x); 95. (1) 以下程序运行后的输出结果是 。int fun(int n) int i,s=1; for(i=1;i=n;i+) s*=i; return s; main() int i,s=0; for(i=1;i=4;i+) s+=fun(i); printf(%dn,s); (2) 以下程序运行后的输出结果是 。void swap(int x,int
34、y) int t; t=x;x=y;y=t; printf(%d %d ,x,y); main() int a=3,b=4; swap(a,b); printf(%d %dn,a,b); (3) 以下程序运行后的输出结果是 。int fun(int n) return n/10+n%10; main() int x=1234,y; y=fun(fun(fun(x); printf(%dn,y); 96. 写出程序的运行结果#include long fun(int n) long s; if(n=1|n=2) s=2; else s=n+fun(n-1); return s;main() lo
35、ng x,y; x=fun(1);y=fun(3); printf(%ldn%ldn,x,y);输出结果为: 97. (1) 以下程序运行后的输出结果是 。#include int fun(int x,int y) static int m=0,i=2;i+=m+1; m=i+x+y; return m; main() int j=1,m=1,k;k=fun(j,m); printf(%3d,k);k=fun(j,m); printf(%3d,k); (2) 以下程序运行后的输出结果是 。int fun(int n) static int s=1; s*=n; return s; main()
36、 int i,s=0; for(i=1;i=4;i+) s+=fun(i); printf(%dn,s); 98. (1) 以下程序运行后的输出结果是 。 #include main() char s=1234567890,*p=s+3; int i=5; printf(%d,%sn,-i,p+); printf(%sn,p-i); (2) 以下程序运行后的输出结果是 。#include main() char s=123456789,*p=s,i=0; while(*p) if(i%2=0) *p=*; p+; i+; printf(%sn,s); 99. (1) 以下程序运行后的输出结果是
37、 。main() int x=1,y=0,a=0,b=0; switch(x) case 1:switch(y) case 0:a+;break; case 1:b+;break; case 2:a+;b+;break; printf(%dn%dn,a,b); (2) 以下程序运行后的输出结果是 。main() int x=1,y=0; switch(x) case 1:switch(y) case 0:printf(firstn);break; case 1:printf(secondn);break; case 2:printf(thirdn);break; (3) 以下程序运行后的输出结
38、果是 。main() int x=2,y=4; switch(x) case 2:printf(onen);break; case 4:switch(y) case 4:printf(twon);break; case 8:printf(threen); (4) 输入 a,输出结果是 输入 c,输出结果是 。main() char n; scanf(%c,&n); switch(n) case a:case A:printf(very goodn);break; case b:case B:printf(goodn);break; case c:case C: case d:case D:pr
39、intf(passn);break; case e:case E:printf(warnn);break; default:printf(errorn); (5) 以下程序运行后的输出结果是 。main() int a=0,b=4,c=5; switch(a=0) case 1:switch(b0) case 1:printf();break; case 0:printf(!);break; case 2:switch(c=5) case 0:printf(*);break; case 1:printf(#);break; default:printf(&); printf(n); 100.(
40、1) 以下程序运行后的输出结果是 。void fun(char *x,char *y) char t; t=*x;*x=*y;*y=t; main() char *p=abc,*q=123; fun(p,q); printf(%s,%sn,p,q); (2) 以下程序运行后的输出结果是 。void fun(char *x,char *y) char *t; t=x;x=y;y=t; main() char *p=one,*q=two; fun(p,q); printf(%s,%sn,p,q); C C 语言精编语言精编 100100 题题 参考答案参考答案一、单选题一、单选题1.1.2.2.3
41、.3.4.4.5.5.B、BB、D、B、D、D、C、C、DC、BC、C、B、C、D、BC、A、B、D6.6.7.7.8.8.9.9.10.10.CC、BC、CDB11.11.12.12.13.13.14.14.15.15.D、BD、B、CB、D、B、D、BAD16.16.17.17.18.18.19.19.20.20.ACCBD、D21.21.22.22.23.23.24.24.25.25.CD、BBDA26.26.27.27.28.28.29.29.30.30.DDCDA、B31.31.32.32.33.33.34.34.35.35.AACCC、C36.36.37.37.38.38.39.3
42、9.40.40.BBACB41.41.42.42.43.43.44.44.45.45.CCAC、C、CA、C46.46.47.47.48.48.49.49.50.50.CCCCB二、填空题二、填空题51.51.主或 main52.52.float、double 53.53.200754.54.(1) 10,12,a(2) 25 21 37(3) 2,1(4) a=%dnb=%d55.55.(1) B 66(2) b(3) 7(4) b a(5) 1,B56.56.123.46000057.57.(1) i=10,j=20(2) 12,3458.58.(1) a=14(2) 0,0,-1059.
43、59.(1) 0(2) (3,0)(3) 2,1(4) 10,20,060.60.(1) 7(2) 81(3) 1061.61.(1) 1(2) 3(3) 8 8 1062.62.459963.63.(1) 0(2) 0918273645(3) 0(4) *64.64.(1) 0(2) 065.65.4066.66.1567.67.6068.68.a1169.69.(1) abc(2) 070.70.(1) 7(2) 9(3) 5(4) 4(5) 5(6) 971.71.(1) 5 472.72.BBB(2) 4,373.73.Beijing74.74.(1) 17(2) 22(3) 27(4
44、) struct STR三、多选题三、多选题75.75.76.76.77.77.78.78.BCECEAECE79.79.80.80.81.81.82.82.BDEACEBCCE四、程序填空题四、程序填空题83.83.84.84.85.85.86.86.(1) i=100(2) i*j(3) j=-j(1) %d,&n(2) j=2(3) t+=1.0/(j*j)(1) iN 或 i10(2) sum+arrayi(3) sum/N 或 sum/10(1) a0(2) max=ai(3) aimin87.87.88.88.89.89.90.90.(1) strlen(st)-1(2) ij(3
45、) sti=stj(1) i*i(2) s=0&sti=9(2) j+(3) stj=0(1) %s(2) stri+32(3) i+91.91.(1) 0(2) aii(3) aiN-1-i五、程序写结果五、程序写结果92.92.3393.93.594.94.(1) 2,5,8,11,14,(2) x=895.95.(1) 33(2) 4 3 3 4(3) 10 96.96.2597.97.(1) 5 11(2) 3398.98.(1) 4,45678901234567890(2) *2*4*6*8*99.99.(1) 21(2) firstthird(3) one(4) very goodpass(5) !#&100.100.(1) 1bc,a23(2) one,two