c语言中,从第一列开始输入以下数据 2743回车 则程序输出的结果是多少?

题目:
#include<stdio.h>
main()
{ int c
while((c=getchar())!='\n')
{ switch(c-'2') ←①
{ case 0:
case 1: putchar(c+4);
case 2: putchar(c+4);break;
case 3: putchar(c+3);
case 4: putchar(c+4);break}}
printf("\n")}
从第一列开始输入以下数据 2743回车 则程序输出的结果是多少?
答案:66877
提问:
1、这个答案怎么算出来的?求详细解答

    第一次c=='2',c-'2'==0,执行case 0:后至第一个break;前的所有语句,先由case 1: 后的putchar(c+4);输出6,再由case 2:后的putchar(c+4);输出6,由break;跳出。 结果是66。

    第二次c=='7',c-'2'==5,没有匹配项,什么也不执行。

    第三次c=='4',c-'2'==2,执行case 2:的putchar(c+4);输出8后由break;跳出。结果是668。

    第四次c=='3',c-'2'==1,执行case 1:的putchar(c+4);输出7后,再执行case 2: 后的putchar(c+4);输出7,由break;跳出。结果是66877。

    第五次c=='\n',while循环退出。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-08-22
2: 2-2 =0 进入case 0 并继续执行到 case 1: 输出6 然后 执行到 case 2 输出 6 ,break结束
7:7-2= 5 :没条件,可用
4:4-2= 2: 进入case 2 ,输出8 ,break
3:3-2= 1: 执行 case 1 和 case 2 输出 两个7 后break
结果就是 66877本回答被提问者采纳
第2个回答  2012-08-22
输入2
c=2 !='\n'
c-2=0 c=2不变
case 1: putchar(c+4); -->c=2不变,输出: 6
case 2: putchar(c+4);break; --〉c=2不变,输出: 6

输入 7
c=7 !='\n'
c-2=5 !=0 、1、2、3、4 c=7不变

输入4
c=4 !='\n'
c-2=2 !=0 c=4不变
case 2: putchar(c+4);break; --〉c=4不变,输出: 8

输入3
c=3 !='\n'
c-2=1 !=0 c=3不变
case 1: putchar(c+4); --〉c=3不变,输出: 7
case 2: putchar(c+4);break; --〉c=3不变,输出: 7

printf("\n")
相似回答