C语言练习题及答案(共74页).doc
精选优质文档-倾情为你奉上C语言练习题第一章 C语言概述1、所有C函数的结构都包括的三部分是( C )A语句、花括号和函数体B函数名、语句和函数体C函数名、形式参数和函数体D形式参数、语句和函数体2、C语言中主函数的个数是( B )A2个 B1个 C任意个 D10个3、下面可能不影响程序正常运行的是( C ) A语法错误 B逻辑错误 C警告提示 D算法错误4、一个C程序的执行是从( A )A. 本程序的main()函数开始,到main()函数结束.B. 本程序文件的第一个函数开始,到本程序文件第一个函数结束.C. 本程序文件的第一个函数开始,到本程序main函数结束.D. 本程序的main()函数开始,到本程序文件的最后一个函数结束.5、C程序由( C )组成。A子程序 B主程序和子程序 C函数 D过程6、下列关于C语言注释的叙述中错误的是( D )。A以“/*”开头并以“*/”结尾的字符串为C语言的注释内容。B注释可出现在程序中的任何位置,用来向用户提示或解释程序的意义。C程序编译时,不对注释作任何处理。 D程序编译时,需要对注释进行处理。7、C语言源程序经过编译后,生成文件的后缀是_C_。A、.cB、.exe C、.objD、.cc 8、以下说法中正确的是_C_。A、C语言程序总是从第一个函数开始执行B、在C语言程序中,要调用函数必须在main()函数中定义C、C语言程序总是从main()函数开始执行D、C语言程序中的main()函数必须放在程序的开始部分9、以下叙述中正确的是_A_。 A:C程序中注释部分可以出现在程序中任意合适的地方 B:花括号""和""只能作为函数体的定界符 C:构成C程序的基本单位是函数,所有函数名都可以由用户命名 D:分号是C语句之间的分隔符,不是语句的一部分第二章 变量与表达式第一节 简单表达式1.算术运算符及其表达式1、C语言中运算对象必须是整型的运算符是_A_。A、% B、* C、 D、 /2.下面运算符优先级最高的是 (C )A.<= B.= C.% D.&&3、下面程序 main() int x=10,y=3; printf("%dn",y=x/y); 的输出是_C_。 A:0 B:1 C:3 D:不确定的值 4、执行下面程序段后,c3中的值是_A_int c1=1 , c2=2 , c3;c3=c1/c2; A:0 B:1/2 C:0.5 D:12.C语言表达式书写规则1、以下变量x、y、z均为double类型且已正确赋值,不能正确表示数学式子x/(y*z)的C语言表达式是_A_。 A:x/y*z B:x*(1/(y*z) C:x/y*1/z D:x/y/z2、设有定义:float a=2,b=4,h=3;,以下C语言表达式中与代数式1/2(a+b)h计算结果不相符的是_B_。 A:(a+b)*h/2 B:(1/2)*(a+b)*h C:(a+b)*h*1/2 D:h/2*(a+b)第二节 变量1.变量1、下列关于C语言的关键字的叙述中错误的是( C )A关键字是C语言规定的具有特定意义的字符串,通常也称保留字。B用户定义的标识符不应与关键字相同。CANSI C标准规定的关键字有64个。 DANSI C标准规定的关键字有32个。2、下面关于C语言用户标识符的描述,正确的是( D ) A. 不区分大小写 B. 用户标识符不能描述常量 C. 类型名也是用户标识符 D. 用户标识符可以作为变量名 3、以下( D )是正确的变量名。 A. a.bee B. -p11 C. int D. p_114、下面属于C语言标识符的是( D )A 2ab B. f C. ?b D. _a125、下列保留字中用于构成循环结构的是( B )A. if B. while C. switch D. default6、以下定义语句中正确的是( C )。A. char a='A'b='B' B. float a=b=10.0;C. int a=10,*b=&a; D. float *a,b=&a; 7、下面标识符中,不合法的用户标识符为 ( D ) A) Pad B) a_10 C) _12ab D) int8、C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符_C_。A、必须为下划线 B、可以是字母、数字和下划线中任一种字符 C、必须为字母或下划线 D、必须为字母9、请选出可用作C语言用户标识符的一组标识符_B_。 void a3_b3 For 2a define _123 _abc DO WORD IF case sizeof A: B: C: D:9、以下选项中合法的用户标识符是_B_。 A:long B:_2Test C:3Dmax D:A.dat10、以下不能定义为用户标识符的是_D_。 A:scanf B:Void C:_3com_ D:int11、在C语言中,如果下面的变量都是int类型,则输出结果是_A_sum=pad=5;pad=sum+,pad+,+pad;printf("%dn",pad); A:7 B:6 b C:5 D:42.常量和符号常量1、以下( B )是错误的整型常量。 A. -0xcdf B. 018 C. 0xe D. 0112、下列符号中用来表示C语言中的回车换行的是( B ) A. ” B. n C. b D. 3、以下( C )是正确的字符常量。 A. "c" B. ''' C. 'W' D. "32a" 4、下面不正确的字符串常量是 ( A ) A) 'abc' B) "12'12" C) "0" D) " "6、以下列出C语言常量中,错误的是_B_。 A:OxFF B:1.2e0.5 C:2L D:'72'7、以下选项中,非法的字符常量是_C_。 A:'t' B:'17' C:"n" D:'xaa'第三节 数据类型1.整型数据1、以下选项中不属于C语言的类型的是_D_。 A:signed short int B:unsigned char C:singed long D:long short2、以下选项中可作为C语言合法整数的是_C_。 A:10110B B:0386 C:0Xffa D:x2a22.实型数据1、以下选项中属于C语言的数据类型是_C_。 A:复数型 B:逻辑型 C:双精度型 D:集合型 2、若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是_C_。 A:1 B:2 C:2.0 D:2.53、设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是_C_。 A:x=x*100+0.5/100.0; B:x=(x*100+0.5)/100.0 C:x=(int)(x*100+0.5)/100.0; D:x=(x/100+0.5)/100.0;4、以下符合C语言语法的实型常量是_C_。 A:1.2E0.5 B:3.14159E C:.5E-3 D:E153.字符型数据1、判断char型变量ch是否为大写字母的正确表达式是_C_。A、A<=ch<=Z B、A<=ch and ch<=ZC、A<=ch && ch<=ZD、A<=ch | ch<=Z2. 设有语句char a='72'则变量a ( A )。A)包含1个字符 B)包含2个字符 C)包含3个字符 D)说明不合法3. 判断变量ch中的字符是否为数字字符,最简单的正确表达式是( D )。A)ch>=0&&ch<=9B)0<=ch<=9C)ch>=0|ch<=9D)ch>=0&&ch<=94、设有说明语句: char a = '72' 则变量a _A_。 A:包含1个字符 B:包含2个字符 C:包含3个字符 D:说明不合法5、已知大写字母A的ASCII码是65,小写字母a的ASCII码是97,则用八进制表示的字符常量'101'是_A_。 A:字符A B:字符a C:字符e D:非法的常量6、若有以下定义和语句:char c1='b',c2='e'printf("%d,%cn",c2-c1,c2-'a'+'A');则输出结果是_B_ A:2,M B:3,E C:2,e D:输出结果不确定7、已知字符A的ASCII码为十进制的65,下面程序的输出是_A_main()char ch1,ch2;ch1='A'+'5'-'3'ch2='A'+'6'-'3'printf("%d,%cn",ch1,ch2); A:67,D B:B,C C:C,D D:不确定的值8、若变量c为char类型,能正确判断出c为小写字母的表达式是D A:'a'<=c<= 'z' B:(c>= 'a')|(c<= 'z') C:('a'<=C)and ('z'>=c) D:(c>= 'a')&&(c<= 'z')4.类型转换1、表达式 f+ 10 的类型是_A_。A、int B、char C、doubleD、float2、设a和b均为double型常量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是_D_。 A:6. B:6 C:5. D:6.第四节 赋值语句1、若有定义:int a=2; 则正确的赋值表达式是( A )。 A. a-=(a*3) B. double(-a) C. a*3 D. a*4=32、若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是( C ) A) 3 B) 9 C) 12 D) 63、请选出合法的C语言赋值语句_B_。 A:a=b=58 B:i+; C:a=58,b=58 D:k=int(a+b);4、若变量已正确定义并赋值,下面符合C语言的表达式是_B_。 A:a:=b+1 B:a=b=c+2 C:int 18.5%3 D:a=a+7=c+b5、若变量a、i已正确定义,且i已正确赋值,合法的语句是_B_。 A:a=1 B:+i; C:a=a+=5 D:a=int(i); 6、以下非法的赋值语句是_C_。 A:n=(i=2,+i); B:j+; C:+(i+1); D:x=j>0;7、以下选项中非法的表达式是_D_。 A:0<=x<100 B:i=j=0 C:(char)(65+3) D:x+1=x+18、若以下选项中的变量已正确定义,则正确的赋值语句是_C_。 A:x1=26.8%3; B:1+2=x2; C:x3=0x12; D:x4=1+2=3;第五节 复杂表达式1.自增、自减运算符1、设x、y均为整型变量,且x=10,y=3,则以下语句的输出结果是printf(“%d,%dn”,x-,-y);( D ) A)10,3 B)9,3 C)9,2 D)10,22、设i为整型变量,且值为100,则语句i;执行后i的值是_B_。A、100B、101 C、102 D、语句错3. 以下程序的输出结果是 ( B ) 。# include <stdio.h>main() int i=010 , j = 10; printf("%d,%dn",+ +i , j - -); A) 11,10 B) 9,10 C) 010,9 D) 10,94.下列程序的运行结果是( A ) # define A 5 # define B A+1 main( ) int a; a=B; printf(%dna-); A.6 B.5 C.4 D.出错5、以下程序的输出结果是_A_。 #include<stdio.h> main() int i=10,j=10; printf("%d,%dn",+i,j-); A:11,10 B:9,10 C:010,9 D:10,9 6、有如下程序main() int y=3,x=3,z=1; printf("%d %dn",(+x,y+),z+2);运行该程序的输出结果是_D_。 A:3 4 B:4 2 C:4 3 D:3 37、设x,y均为int型变量,且x=10,y=3,则以下数据的输出结果是 D printf("%d,%dn",x-,-y)。 A:10,3 B:9,3 C:9,2 D:10,28、下列关于单目运算符+、-的叙述中正确的是_D_。 A:它们的运算对象可以是任何变量和常量 B:它们的运算对象可以是char型变量和int型变量,但不能是float型变量 C:它们的运算对象可以是int型变量,但不能是double型变量和float型变量 D:它们的运算对象可以是char型变量、int型变量和float型变量9.main() int m=3,n=4,x; x=-m+; x=x+8/+n; printf("%dn",x);程序运行后的输出结果是_D_。 A:3 B:5 C:-1 D:-210、有以下程序main() char a='a',b; printf("%c,",+a); printf("%cn",b=a+);程序运行后的输出结果是_A_。 A:b,b B:b,c C:a,b D:a,c11、若有以下定义和语句:int a=5a+;此处表达式a+的值是_B_ A:7 B:6 C:5 D:42.关系运算符与关系表达式1、设有int x,y; 以下语句判断x和y是否相等,正确的说法是该语句( B )if (x=y) printf(" x is equal to y."); A. 语法错B. 不能判断x和y是否相等C. 编译出错D. 能判断x和y是否相等2、表达式:10!=9的值是_D_。 A:true B:非零值 C:0 D:13.逻辑运算符与逻辑表达式1、能表示条件0x 100的表达式是 ( D ) A) 0<= x <=100 B. x >=0, x<=100 C) 0x 100 D) x>=0&& x<=1002、设有:int a=1,b=2,c=3,d=4,m=2,n=2; 执行 (m=a>b) && (n=c>d) 后n的值为 ( C ) A) 0 B) 1 C) 2 D) 33、能正确表示a和b同时为正或同时为负的逻辑表达式是_D_。A、(a>=0b>=0)&&(a<0b<0)B、(a>=0&&b>=0)&&(a<0&&b<0)C、(a+b>0)&&(a+b<=0)D、a*b>04、设有定义int a = 1,b = 2, c = 3;则下面的值为1的表达式是_A_。A、a&&7 B、a<b&&!cC、a&&!b D、b= c 5、设a、b和c都是int型变量,且a=3、b=4、c=5,则下面的表达式中,值为0的表达式是_D_。 A:'a'&&'b' B:a<=b C:a|+c&&b-c D:!(a<b)&&!c|1) 6、设a=5、b=6、c=7、d=8、m=2、n=2,执行 (m=a>b)&&(n=c>d)后n的值为_B_。 A:1 B:2 C:3 D:4 7、有如下程序段int a=14,b=15,x;char c='A'x=(a && b) && (c<'B');执行该程序段后,x的值为_D_。 A:true B:false C:0 D:18、设x、y、t均为int型变量,则执行语句:x=y=3;t=+x|+y;后,y的值为_C_。 A:不定值 B:4 C:3 D:19. 以下程序的输出结果是_A_。main() int a=4,b=5,c=0,d; d=!a&&!b|!c; printf("%dn",d) A:1 B:0 C:非0的数 D:-110、有以下程序main() int a=1,b=2,m=0,n=0,k; k=(n=b>a)|(m=a<b); printf("%d,%dn",k,m);程序运行后的输出结果是_C_。 A:0,0 B:0,1 C:1,0 D:1,111、有以下程序main() int i=1, j=1, k=2;if ( (j+ | k+) && i+) printf("%d,%d,%dn", i, j, k);执行后输出结果是 C A:1,1,2 B:2,2,1 C:2,2,2 D:2,2,312、以下程序的输出结果是 A main() int a=4,b=5,c=0,d; d=!a&&!b|!c; printf("%dn",d); A:1 B:0 C:非0的数 D:-14. 逗号运算符1、若x,i,j,k都是int型变量,则执行下面表达式后x的值为_C_ x=(i=11,j=22,k=33) A、 11 B、22C、33 D、662、若x和y都是int型变量,x=100、y=200,且有下面的程序片段 printf("%d",(x,y) );上面程序片段的输出结果是_A_。 A:200 B:100 C:100 200 D:输入格式符不够,输出不确定的值3、若执行以下程序段,其输出结果是_B_int a=0 , b=0 , c=0;c=(a-=a-5) , (a=b,b+3) ;printf("%d , %d , %dn" , a,b,c); A:3,0,-10 B:0,0,5 C:-10,3,-10 D:3,0,3第六节 基本输入输出语句2.格式化输入与输出函数1、若有说明语句:int a,b,c,*d=&c;,则能从键盘读入三个整数分别赋给变量a、b、c的语句是( A ) A. scanf("%d%d%d",&a,&b,d); B. scanf("%d%d%d",&a,&b,&d); C. scanf("%d%d%d",a,b,d); D. scanf("%d%d%d",a,b,*d);2、调用scanf(“%d,%d”,&a,&b);时,正确的键盘输入是 ( A ) A) 10,20 B) a=10,b=20 C) 10:20 D) 10 203、下面的程序段 int i = 6;printf (“*%-4d*n”, i);的输出是_B_。 A、* 6* B、*6 * C、*0006* D、出错4. 已知在ASCII代码中,字母A的序号为65,以下程序的输出的结果是 ( D ) 。# include <stdio.h>main() char c1='A', c2='Y' printf("%d,%dn",c1,c2); A) 因输出格式不合法,输出错误信息 B)65,90 C)A,Y D)65,895、以下程序的输出结果是_D_。main() int k=17; printf("%d,%o,%xn",k,k,k); A:17,021,0x11 B:17,17,17 C:17,0x11,021 D:17,21,116、若变量已正确说明为float类型,要通过语句scanf("%f %f %f",&a,&b,&c);给 a赋予10.0,b赋予22.0,c赋予33.0,不正确的输入形式是:_B_。 A:102233 B:10.0,22.0,33.0 C:10.022.0 33.0 D:10 22337、X、Y、Z被定义为int型变量,若从键盘给X、Y、Z输入数据,正确的输入语句是_B_。 A:INPUT X,Y,Z; B:scanf("%d%d%d",&X,&Y,&Z); C:scanf("%d%d%d",X,Y,Z); D:read("%d%d%d",&X,&Y,&Z); 8、已知i、j、k为int型变量,若从键盘输入:1,2,3,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是_C_。 A:scanf("%2d%2d%2d",&i,&j,&k); B:scanf(""%d %d %d",&i,&j,&k); C:scanf("%d,%d,%d",&i,&j,&k); D:scanf("i=%d,j=%d,k=%d",&i,&j,&k);9、设有定义:long x=-L;,则以下能够正确输出变量x值的语句是_B_。 A:printf("x=%dn",x); B:printf("x=%ldn",x); C:printf("x=%8dLn",x); D:printf("x=%LDn",x);10、有以下程序段 int m=0,n=0; char c='a' scanf("%d%c%d",&m,&c,&n); printf("%d,%c,%dn",m,c,n);若从键盘上输入:10A10,则输出结果是_A_。 A:10,A,10 B:10,a,10 C:10,a,0 D:10,A,011、有以下程序main() int x=102,y=012; printf("%2d,%2dn",x,y);执行后输出结果是_C_。 A:10,01 B:02,12 C:102,10 D:02,1012、有以下程序main() char a,b,c,d; scanf("%c,%c,%d,%d",&a,&b,&c,&d); printf("c,%c,%c,%cn",a,b,c,d); 若运行时从键盘上输入:6,5,65,66。则输出结果是_A_。 A:6,5,A,B B:6,5,65,66 C:6,5,6,5 D:6,5,6,613、有以下程序main() unsigned int a; int b=-1; a=b; printf("%u",a);程序运行后的输出结果是_B_。 A:-1 B:65535 C:32767 D:-3276814、下面程序的输出是_D_main()int k=11;printf("k=%d,k=%o,k=%xn",k,k,k); A:k=11,k=12,k=13 B:k=11,k=13,k=13 C:k=11,k=013,k=oXb D:k=11,k=13,k=b15、若有定义:int x,y; char a,b,c; 并有以下输入数据(此处<CR>代表换行):1 2 <CR>A B C<CR>则能给x赋整数1,给y赋数2,给a赋字符A,给b赋字符B,给c赋字符C的正确程序段是_C_ A:scanf("x=%d y=%d",&x,&y); a=getchar(); c=getchar(); B:scanf("%d%d",&x,&y); a=getchar(); b=getchar(); c=getchar(); C:scanf("%d%d%c%c%c",&x,&y,&a,&b,&c); D:scanf("%d%d%c%c%c%c%c%c",&x,&y,&a,&a,&b,&b,&c,&c);16、设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值:scanf("i=%d,f=%f",&i,&f);为了把100和765.12分别赋给i和f,则正确的输入为 B A:100<空格>765.12<回车> B:i=100,f=765.12<回车> C:100<回车>765.12<回车> D:x=100<回车>,y=765.12<回车> 第七节 顺序结构程序设计1、C语言中用于结构化程序设计的三种基本结构是_A_。 A:顺序结构、选择结构、循环结构 B:if、switch、break C:for、while、do-while D:if、for、continue第三章 控制语句第一节if语句1.ifelse语句的三种形式1、以下if语句错误的是( A )A. if (x<y) x+; y+; else x-; y-; B. if (y) x+y; C. if (x>y); D. if (x=5) scanf ("%d",&x); else x+;2. 两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是 Amain( )int x;scanf("%d",&x);if(x + + >5) printf("%d",x);else printf("%dn",x - -); A) 7和5 B) 6和3 C) 7和4 D) 6和43、若执行下面的程序时从键盘上输入3和4, main() int a,b,s; scanf("%d %d",&a,&b); s=a; if(a<b)s=b; s=s*s; printf("%dn",s); 则输出是_B_。 A:14 B:16 C:18 D:20 4、有如下程序main() float x=2.0,y; if(x<0.0) y=0.0; else if(x<10.0)y=1.0/x; el