题目:
#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循环退出。