365文库
登录
注册
2

C语言二级试题及答案解析

259阅读 | 10收藏 | 12页 | 打印 | 举报 | 认领 | 下载提示 | 分享:
2
C语言二级试题及答案解析第1页
C语言二级试题及答案解析第2页
C语言二级试题及答案解析第3页
C语言二级试题及答案解析第4页
C语言二级试题及答案解析第5页
C语言二级试题及答案解析第6页
C语言二级试题及答案解析第7页
C语言二级试题及答案解析第8页
C语言二级试题及答案解析第9页
C语言二级试题及答案解析第10页
C语言二级试题及答案解析第11页
C语言二级试题及答案解析第12页
福利来袭,限时免费在线编辑
转Pdf
right
1/12
right
下载我编辑的
下载原始文档
收藏 收藏
搜索
下载二维码
App功能展示
海量免费资源 海量免费资源
文档在线修改 文档在线修改
图片转文字 图片转文字
限时免广告 限时免广告
多端同步存储 多端同步存储
格式轻松转换 格式轻松转换
用户头像
病为名爱 上传于:2024-05-18
1.以下有4组用户标识符,其中合法的一组是( )。 A) For -sub Case    B) 4d DO Size C) f2_G3 IF abc     D) WORD void define 答案C 解析:标识符的命名规则:由字母、数字、下划线组成,第一个字符必须是字母或者下划线,标示符的命名不能同C语言的关键字相同(关键字表格教材第6页) A-sub错误;B,4d错误;Dvoid是关键字。注意:关键字都是小写的,如果大写就不是关键字了。 2、以下选项中合法的字符常量是( )。 A) “B”    B) ‘\010’    C) 68    D) D 答案B 解析:字符常量使用‘’括起来的。参考课本24页 转义字符书写方法:1.\加上字母;2.\加上1~3位八进制数,这里八进制数以0开头;3.\加上1~2位十六进制数,这里十六进制数以x开头。例如: ‘
’第一种方法 ‘\012’第二种方法 ‘\xa’ 第三种方法 4、设变量a是整型,f是实型,i是双精度型,则表达式10+a+i*f值的数据类型为( )。 A) int    B) float    C) double    D) 不确定 答案:C,按照低精度转换成高精度的原则(教材34页) 5、.以下程序的输出结果是 main() { char c=‘z'; printf(“%c”,c-25); } A) a    B) Z    C) z-25    D) y 答案:A 解析:方法一:‘z’对应的ASCII码是122,122-25=97,输出的是%c,即字符的形式,97对应小写字母a。 方法二:与小写字母z相差22的就是小写字母a 6、设有 int x=11; 则表达式 (x++ * 1/3) 的值是( )。 A) 3    B) 4    C) 11    D) 12 答案:A 解析:x++,先取x的值再乘以1除以3,11*1=11,11/3=3因为都是整形的数据,因此相除之后的结果应该为整形。 7、假设所有变量均为整型,则表达式(a=2, b=5, b++, a+b)的值是( )。 A) 7    B) 8    C) 6    D) 2 答案:B 解析:逗号表达式的值为表达式最右边式子的值,计算过程a=2,b=5,b=b+1=6,a+b=2+6=8;最右边式子是a+b其值为8,因此整个逗号表达式的值为8. 8、以下程序的输出结果是( )。 #include main() { int a=10,b=10; printf(“%d,%d
”,a++,--b); } A) 10,10    B) 8,10    C) 10,9    D) 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,%x
",k,k,k); } A)17,021,0x11     B)17,17,17 B)17,0x11,021     D)17,21,11 答案:D 10、若变量已正确说明为float类型,要通过语句scanf("%f %f %f ",&a,&b,&c); 给a赋于10.0,b赋予22.0,c赋予33.0,不正确的输入形式是( ): A) 10<回车>      B) 10.0,22.0,33.0<回车> 22<回车> 33<回车> C) 10.0<回车>     D) 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!=0 12、当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是( )。 if(ay) z=x;x=y;y=z; A) x=10,y=20,z=30     B) x=20,y=30,z=30 C) x=20,y=30,z=10     D) x=20,y=30,z=20 答案:B 解析:x=10,y=20因此x>y不成立,语句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=%d
”,a,b); } 该程序的输出结果是( )。 A) a=2,b=1     B) a=1,b=1     C) a=1,b=0     D) 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=(++a<0)&&!(b--<=0); printf(“%d%d%d
”, k, a, b); } A) 104     B) 103     C) 003     D) 004 答案D 解析:++a先取将a=a+1再进行a与0的比较,显然0<0是不成立的,因此k=0,!(b--<=0)不参与计算,因此b的值仍为4 16、若变量a、i已正确定义,且i已正确赋值,合法的语句是( )。 A) a==1     B) ++i;      C) a=a++=5;      D) a=int(i); 答案B 17、下面程序段的运行结果是( )。 int n=0; while(n++<=2); printf(“%d”,n); A) 2     B) 3     C) 4     D) 有语法错 答案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=4 18、若有如下语句 int x=3; do{ printf(“%3d”,x-=2);} while(!(--x)); 则上面程序段( )。 A) 输出的是1       B) 输出的是1和-2 C) 输出的是3和0     D) 是死循环 答案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和-2 19、下面程序的运行结果是( )。 #include main() {int a=1,b=10; do {b-=a;a++;} while(b--<0); printf(“a=%d,b=%d
”,a,b); } A) a=3,b=11     B) a=2,b=8 C) a=1,b=-1     D) a=4,b=9 答案B 解析:do-while循环先执行后判断,因此先执行b=b-a=10-1=9,a=a+1=1+1=2,判断b--<0是否成立,b=9<0不成立,循环结束,b=b-1=8,最后输出a=2,b=8 20、设有程序段 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==0     B) E!=1     C) E!=0     D) E==1 答案:A 解析:只有当E为0的时候!0才为真,也就是只有当E=0时while循环体才被执行。 22、t为int类型,进人下面的循环之前,t的值为0,则以下叙述中正确的是( )。 while( t=l ) {……} A) 循环控制表达式的值为0     B) 循环控制表达式的值为1 C) 循环控制表达式不合法      D) 以上说法都不对 答案B 25、以下程序的输出结果是( )。 main() {int a,b; for(a=1,b=1;a<=100;a++) {if(b>=20) break; if(b%3==1) {b+=3; continue; } b-=5; } printf(“%d
”,a); } A) 7     B) 8     C) 9     D) 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=10 a=4,b%3=1,b=13 a=5,b%3=1,b=16 a=6,b%3=1,b=19 a=7,b%3=1,b=21 a=8,b>=20,循环结束,因此a的值为8 26、以下程序的输出结果是( )。 main() {int i,j,x=0; for(i=0;i<2;i++) { x++; for(j=0;j<=3;j++) { if(j%2) continue; x++; } x++; } printf(“x=%d
”,x); } 答案:8 i=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=1 x=4 i=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=1 x=8 27、运行以下程序后,如果从键盘上输入65 14<回车>,则输出结果是( )。 main() {int m,n; scanf(“%d%d”,&m,&n); while(m!=n) {while(m>n) m-=n; while(n>m) n-=m; } printf(“m=%d
”, m); } A) m=3     B) m=2     C) m=1     D) m=0 m=65,n=14 m!=n m>n m=m-n=65-14=51 m!=n m>n m=m-n=37 m!=n m>n m=m-n=23 m!=n m>n m=m-n=9 m!=n n>m n=n-m=14-9=5 m!=n m>n m=m-n=9-5=4 m!=n n>m n=n-m=5-4=1 m!=n m>n m=m-n=4-1=3 m!=n m>n m=m-n=3-1=2 m!=n m>n m=m-n=2-1=1 m=n循环结束,最后m的值为1 28、设有数组定义: char array[ ]="China"; 则数组array所占的空间为( C )。 A) 4个字节     B) 5个字节     C) 6个字节     D) 7个字节 29、假定int类型变量占用两个字节,若有定义:int x[10]={0,2,4}; 则数组x在内存中所占字节数是( D )。 A) 3     B) 6     C) 10     D) 20 30、执行下列程序时输入:123<空格>456<空格>789<回车>,输出结果是( D )。 main() { char s[100]; int c, i; scanf("%c", &c); scanf("%d", &i); scanf("%s", s); printf("%c, %d, %s
", c, i, s); } A) 123,456,789       B) 1,456,789 C) 1,23,456,789       D) 1,23,456 31、以下程序的输出结果是( D )。 main() {char w[ ][10]={"ABCD","EFGH","IJKL","MNOP"},k; for(k=1;k<3;k++) printf("%s
",w[k]
tj