问题
单项选择题
有以下程序:
#include<stdio.h>
main()
int c;
while((c=getchar())!='\n')
switch(c-'2')
case 1:putchar(c+4);
case 2:putchar(c+4);break;
case 3:putchar(c+4);
case 4:putchar(c+4);break;
printf("\n");
输入以下数据,<CR>代表一个回车符,
2743<CR>
程序的输出结果是( )。
A) 877
B) 966
C) 778
D) 766
答案
参考答案:A
解析: 本题通过一个while循环向键盘缓冲区读取字符,直到读到的字符是回车键结束循环。当读到的c为'2'时,c-'2'为0, switch语句中没有case 0:所以没有输出,继续读下一个;当c为'7'时,c-'2'=5,也没有输出;当c为'4'时,c-'2'=2,执行case 2:后面的语句输出一个字符c+4='4'+4='8';当c为'3'时,c-'2'=1,执行case 1:后面的语句,连续输出两次c+4='3'+4='7'。故程序输出结果是877,应该选择A。