C语言二级试题及答案解析.doc_第1页
C语言二级试题及答案解析.doc_第2页
C语言二级试题及答案解析.doc_第3页
C语言二级试题及答案解析.doc_第4页
C语言二级试题及答案解析.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1以下有4组用户标识符,其中合法的一组是( )。A) For -sub CaseB) 4d DO Size C) f2_G3 IF abc D) WORD void define答案C解析:标识符的命名规则:由字母、数字、下划线组成,第一个字符必须是字母或者下划线,标示符的命名不能同C语言的关键字相同(关键字表格教材第6页)A-sub错误;B,4d错误;Dvoid是关键字。注意:关键字都是小写的,如果大写就不是关键字了。2、以下选项中合法的字符常量是( )。A) “B”B) 010C) 68D) D答案B解析:字符常量使用括起来的。参考课本24页转义字符书写方法:1.加上字母;2.加上13位八进制数,这里八进制数以0开头;3.加上12位十六进制数,这里十六进制数以x开头。例如:n第一种方法012第二种方法xa 第三种方法4、设变量a是整型,f是实型,i是双精度型,则表达式10+a+i*f值的数据类型为( )。A) intB) floatC) doubleD) 不确定答案:C,按照低精度转换成高精度的原则(教材34页)5、以下程序的输出结果是main() char c=z; printf(“%c”,c-25);A) aB) ZC) z-25D) y答案:A解析:方法一:z对应的ASCII码是122,122-25=97,输出的是%c,即字符的形式,97对应小写字母a。方法二:与小写字母z相差22的就是小写字母a6、设有 intx=11; 则表达式 (x+ * 1/3) 的值是( )。A) 3B) 4C) 11D) 12答案:A解析:x+,先取x的值再乘以1除以3,11*1=11,11/3=3因为都是整形的数据,因此相除之后的结果应该为整形。7、假设所有变量均为整型,则表达式(a=2, b=5, b+, a+b)的值是( )。A) 7B) 8C) 6D) 2答案:B解析:逗号表达式的值为表达式最右边式子的值,计算过程a=2,b=5,b=b+1=6,a+b=2+6=8;最右边式子是a+b其值为8,因此整个逗号表达式的值为8.8、以下程序的输出结果是( )。#includemain() int a=10,b=10; printf(“%d,%dn”,a+,-b);A) 10,10B) 8,10C) 10,9D) 8,9答案:C解析:本题是+,-运算的使用,首先看输出函数的输出项,从右边开始往左计算,-b,-在b的前面,因此先进行b-1运算,再输出b的值,b输出值为9;a+,+在a的后面,先输出a的值再进行a+1运算,因此a输出的值应该为10.9、以下程序的输出结果是( )。main( ) int k=17; printf(%d,%o,%xn,k,k,k);A)17,021,0x11B)17,17,17B)17,0x11,021D)17,21,11答案:D10、若变量已正确说明为float类型,要通过语句scanf(%f %f %f ,&a,&b,&c); 给a赋于10.0,b赋予22.0,c赋予33.0,不正确的输入形式是( ):A) 10B) 10.0,22.0,33.0 22 33C) 10.0D) 10 22 22.0 33.0 33答案B,输入函数的使用方法,使用scanf函数输入时按空格或者回车将数据隔开11、若有条件表达式 (exp)?a+:b-,则以下表达式中能完全等价于表达式(exp)的是( )。A) (exp=0)B) (exp!=0)C) (exp=1)D) (exp!=1)答案B解析:我们先分析题目的条件,如果exp为真(也就是说exp不为0)那么输出a+,否则输出b-,很明显应该选择exp!=012、当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是( )。if(ab)1if(cd) x=1;2else2 if(ac)3 if(bd) x=2;4 else x=3;4 else x=6;3else x=7;1A) 1B) 2C) 3D) 6答案为B解析:如果if-else语句掌握熟练可直接分析程序做题目。否则,先将if和else配对(题目上红色数字即为配对情况)如果ab成立则执行x=7;否则如果cd成立则x=1;否则,当ac成立x=6,否则,当bd成立则x=2,否则x=3;由题目可见,ab不成立,cd不成立,而ay) z=x;x=y;y=z;A) x=10,y=20,z=30B) x=20,y=30,z=30C) x=20,y=30,z=10D) x=20,y=30,z=20 答案:B解析:x=10,y=20因此xy不成立,语句z=x;不被执行,继续执行x=y;y=z,x=20,y=30,而z的值保持不变。14、有如下程序 main( )int x=1,a=0,b=0; switch(x) case 0: b+; case 1: a+; case 2: a+;b+; printf(“a=%d,b=%dn”,a,b); 该程序的输出结果是( )。A) a=2,b=1B) a=1,b=1C) a=1,b=0D) a=2,b=2答案A解析:x=1,执行a+;先取a的值,在将a=a+1=1,接下来执行a+,b+同样的道理,先执行a=1,和b=0,再进行+1运算,最后a=a+1=2,b=b+1=1。15、以下程序的输出结果是( )。main() int a= -1, b=4, k; k=(+a0)&!(b-=0); printf(“%d%d%dn”, k, a, b);A) 104B) 103C) 003D) 004答案D解析:+a先取将a=a+1再进行a与0的比较,显然00是不成立的,因此k=0,!(b-=0)不参与计算,因此b的值仍为416、若变量a、i已正确定义,且i已正确赋值,合法的语句是( )。A) a=1B) +i; C) a=a+=5; D) a=int(i);答案B17、下面程序段的运行结果是( )。int n=0;while(n+=2);printf(“%d”,n);A) 2B) 3C) 4D) 有语法错答案C解析:while语句的循环体为空,这里要注意语句后面的分号,断定循环体为空,因此第一次循环n=0,n=2为真,n+,n=1;第二次循环n=1,n=2成立,n+,n=2;第三次循环,n=2,n=2,n+,n=3;第三次循环,n=3,n=2不成立,但是在判断的时候是判断n+=2成立不成立,因此n+是参与计算的,所以,n=n+1=418、若有如下语句int x=3;do printf(“%3d”,x-=2); while(!(-x);则上面程序段( )。A) 输出的是1B) 输出的是1和-2C) 输出的是3和0D) 是死循环答案B解析:do-while循环,先执行后判断,首先输出x-=2的值,即x=x-2=3-2=1。,接着判断-x是否为0,是则继续执行循环,因为-x为0则!(-x)为1,那么-x即先将x-1再判断,因此1-1=0,所以继续循环,输出x=x-2=0-2=-2,判断-x的值,-x=-3因此!(-x)为假循环结束。程序输出了1和-219、下面程序的运行结果是( )。#include main()int a=1,b=10; do b-=a;a+; while(b-0); printf(“a=%d,b=%dn”,a,b);A) a=3,b=11B) a=2,b=8C) a=1,b=-1D) a=4,b=9答案B解析:do-while循环先执行后判断,因此先执行b=b-a=10-1=9,a=a+1=1+1=2,判断b-0是否成立,b=90不成立,循环结束,b=b-1=8,最后输出a=2,b=820、设有程序段int k=10;while(k=0) k=k-1;则下面描述中正确的是( )。A) while循环执行10次 B) 循环是无限循环C) 循环体语句一次也不执行D) 循环体语句执行一次答案:C解析:while语句先判断后执行k=0不成立,循环体不被执行。21、语句while(!E);中的表达式!E等价于( )。A) E=0B) E!=1C) E!=0D) E=1答案:A解析:只有当E为0的时候!0才为真,也就是只有当E=0时while循环体才被执行。22、t为int类型,进人下面的循环之前,t的值为0,则以下叙述中正确的是( )。while( t=l )A) 循环控制表达式的值为0B) 循环控制表达式的值为1C) 循环控制表达式不合法 D) 以上说法都不对答案B25、以下程序的输出结果是( )。main()int a,b; for(a=1,b=1;a=20) break; if(b%3=1) b+=3; continue; b-=5; printf(“%dn”,a);A) 7B) 8C) 9D) 10答案:a=1,b=1,b%3=1,b=b+3=4;a=2,b%3=1,b=b+3=7;a=3,b%3=1,b=10a=4,b%3=1,b=13a=5,b%3=1,b=16a=6,b%3=1,b=19a=7,b%3=1,b=21a=8,b=20,循环结束,因此a的值为826、以下程序的输出结果是( )。main()int i,j,x=0; for(i=0;i2;i+) x+; for(j=0;j=3;j+) if(j%2) continue; x+; x+; printf(“x=%dn”,x);答案:8i=0, x=1,j=0,j%2=0,x=2 j=1,j%2=1 j=2,j%2=0,x=3 j=3,j%2=1x=4i=1,x=5, j=0,j%2=0,x=6 j=1,j%2=1 j=2,j%2=0,x=7 j=3,j%2=1x=827、运行以下程序后,如果从键盘上输入65 14,则输出结果是( )。main()int m,n; scanf(“%d%d”,&m,&n); while(m!=n) while(mn) m-=n; while(nm) n-=m; printf(“m=%dn”, m);A) m=3B) m=2C) m=1D) m=0m=65,n=14m!=n mn m=m-n=65-14=51m!=n mn m=m-n=37m!=n mn m=m-n=23m!=n mn m=m-n=9m!=n nm n=n-m=14-9=5m!=n mn m=m-n=9-5=4m!=n nm n=n-m=5-4=1m!=n mn m=m-n=4-1=3m!=n mn m=m-n=3-1=2m!=n mn m=m-n=2-1=1m=n循环结束,最后m的值为128、设有数组定义: char array =China; 则数组array所占的空间为( C )。A) 4个字节B) 5个字节C) 6个字节D) 7个字节29、假定int类型变量占用两个字节,若有定义:int x10=0,2,4; 则数组x在内存中所占字节数是( D )。A) 3B) 6C) 10D) 2030、执行下列程序时输入:123456789,输出结果是( D )。main() char s100; int c, i; scanf(%c, &c); scanf(%d, &i); scanf(%s, s); printf(%c, %d, %sn, c, i, s);A) 123,456,789B) 1,456,789C) 1,23,456,789 D) 1,23,45631、以下程序的输出结果是( D )。main()char w 10=ABCD,EFGH,IJKL,MNOP,k; for(k=1;k3;k+) printf(%sn,wk);A) ABCDB) ABCDC) EFGD) EFGH FGH EFG JK IJKL KL IJ O M32、函数调用strcat( strcpy(str1,str2), str3 )的功能是(C )。A) 将串str1复制到串str2中后再连接到串str3之后B) 将串str1连接到串str2之后再复制到串str3之后C) 将串str2复制到串str1中后再将串str3连接到串str1之后D) 将串str2连接到串str1之后再将串str1复制到串str3之后33有以下定义:char x =“abcdefg”;char y =a, b, c, d, e, f, g;则正确的叙述为(C )。A) 数组x和数组y等价B) 数组x和数组y的长度相同C) 数组x的长度大于数组y的长度D) 数组x的长度小余数组y的长度34、在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是( B)。A) 地址传递B) 单向值传递C) 由实参传给形参,再由形参传回实参D) 传递方式由用户指定35、以下函数值的类型是( A )。fun( float x )float y; y=3*x4; return y;A) intB) 不确定C) voidD) float36、以下程序的输出结果是( B )。int a, b;void fun()a=100; b=200;main()int a=5, b=7; fun(); printf(%d%dn, a, b);A) 100200B) 57C) 200100D) 7537、设有以下函数:f( int a)int b=0; static int c=3; b+; c+; return(a+b+c);如果在下面的程序中调用该函数,则输出结果是(A )。main()int a=2, i; for(i=0;i3;i+) printf(%dn, f(a);A) 7B) 7C) 7D) 7 8 9 10 7 9 11 i=0,a=2,c=3,b=1,c=4,a+b+c=7i=1,a=2,c=4,b=1,c=5,a+b+c=8i=2,a=2,c=5,b=1,c=6,a+b+c=938、有如下函数调用语句:func(rec1, rec2+rec3, (rec4, rec5); 在该函数调用语句中,含有的实参个数是(A )。A) 3B) 4C) 5D) 有语法错39、在C语言中,变量的隐含存储类别是( A )。A) autoB) staticC) externD) 无存储类别40在下列的函数调用中,不正确的是( D )。A) max(a,b);B) max(3,a+b);C) max(3,5);D) int max(a,b);41、在下列叙述中,错误的一条是( A )。A) 主函数main中定义的变量在整个文件或程序中有效B) 不同函数中,可以使用相同名字的变量C) 函数中的形式参数是局部变量D) 在一个函数内部,可在复合语句中定义变量,这些变量只在本复合语句中有效42、在下列叙述中,错误的一条是( )。A) scanf函数可以用来输入任何类型的多个数据B) 数组名作函数参数时,也采用“值传递”方式C) 如果形参发生改变,不会改变主调函数的实参值D) 函数的实参与形参的类型应一致43、下列程序执行后输出的结果是( A )。int d=1;fun(int p)int d=5; d+=p+; printf(“%d”, d);main( )int a=3; fun(a); d+=a+; printf(“%dn”, d);A) 84B) 96C) 94D) 8544、宏定义#define PI 3.1415926的作用是:指定用标识符PI来代替一个( B )。A) 单精度数B) 字符串C) 双精度数D) 整数45、以下程序的输出结果是( C )。#def

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论