第一题
1、如下程序的功能是( )
#include <stdio.h> int main() { char ch[80] = "123abcdEFG*&"; int j; puts(ch); for(j = 0; ch[j] != '\0'; j++) { if(ch[j] >= 'A' && ch[j] <= 'Z') { ch[j] = ch[j] + 'e' - 'E'; } } puts(ch); return 0; }
A: 测字符数组ch的长度
B: 将数字字符串ch转换成十进制数
C: 将字符数组ch中的小写字母转换成大写
D: 将字符数组ch中的大写字母转换成小写
答案及解析 D
先来解读程序,首先定义了一个char类型的字符串,然后puts,输出这个字符串,再去遍历字符串,如果是大写字母,就转换成小写字母,最后再次打印字符串;
所以这个程序的功能就是D。
第二题
2、对于代码段,下面描述正确的是( )
t=0; while(printf("*")) { t++; if (t<3) break; }
A: 其中循环控制表达式与0等价
B: 其中循环控制表达式与'0'等价
C: 其中循环控制表达式是不合法的
D: 以上说法都不对
答案及解析 B
本题问的是while的循环的条件是和什么等价的。
这里涉及到了printf函数,我们要知道printf函数是有返回值的
大家不清楚的可以看我的这篇博客🔗http://t.csdnimg.cn/bkwOb
我们知道printf的返回值是跟我们的打印的字符有关的,打印普通键盘上的字符是,打印几个返回值就是几,还有转义字符,汉字等等,看博客吧,这里不介绍了。
所以这里面打印的字符只有一个,那返回值就是1,循环条件为真,是恒成立的;
我们再来看选项,找循环条件为真的,0为假,非0都是真(无论正负);
最好只有B选项正确
第三题
3、以下程序运行时,若输入 1abcedf2df<回车> 输出结果是( )
#include <stdio.h> int main() { char ch; while ((ch = getchar()) != '\n') { if (ch % 2 != 0 && (ch >= 'a' && ch <= 'z')) ch = ch - 'a' + 'A'; putchar(ch); } printf("\n"); return 0; }
A: 1abcedf2df
B: 1ABCEDF2DF
C: 1AbCEdf2df
D: 1aBceDF2DF
答案及解析 C
本题考查的是ASCII值,大小写的转换
首先while循环条件的表达式是用来输入字符的,我们可以在键盘上输入一堆字符,但是getchar是每次只取一个字符,直到取到回车字符;
然后putchar是依次输出字符;
我们知道这些之后就看ASCII值就OK了,这个表在前面发过了,希望大家做题可以保存下来,防止忘记哦!
第四题
4、下列条件语句中,功能与其他语句不同的是( )
A:
if(a) printf("%d\n",x); else printf("%d\n",y);
B:
if(a==0) printf("%d\n",y); else printf("%d\n",x);
C:
if (a!=0) printf("%d\n",x); else printf("%d\n",y);
D:
if(a==0) printf("%d\n",x); else printf("%d\n",y);
答案及解析 D
这个题就是看a = 0的时候都输出几,所以我们直接默认a为0再来看选项;
A:a = 0 时;输出y;
B:a = 0 时;输出y;
C:a = 0 时;输出y;
D:a = 0 时;输出x;
所以最后只有D跟其他三个不同,选D
第五题
5、我们知道C语言的 break 语句只能跳出离它最近的一层循环,可是有时候我们需要跳出多层循环,下列跳出多层循环的做法正确的是【多选】( )
A: 将程序写成函数用return结束函数,便可跳出循环
B: 修改外层循环条件例如
for( int i = 0 ; i < MAX1 ; i ++ ) { for( int j = 0 ; j < MAX2 ; j ++ ) { if( condition ) { i = MAX1; break; } } }
C: 在外层循环设置判断条件例如
for( ; symbol != 1 && condition2 ; ) { for( ; symbol != 1 && condition3 ; ) { if( condition1 ) symbol = 1 ; } }
D: 在外层循环后面加入break例如
for( ; condition2 ; ) { for( ; condition3 ; ) { if( condition1 ) symbol = 1 ; } if( symbol == 1 ) break ; }
答案及解析 ABCD
这里先解释一下上面的是伪代码,condition是条件;
跳出多层循环可以使用return,也可以使用一些手段,让跳出最外层循环;