若程序的输入数据时“2473”,则输出结果是?

#include <stdio.h>
void main()
{int cs;
while((cs=getchar())!=;`\n`)
switch(cs-`2`)
case0
case1: putchar( cs+4);
case2: putchar(cs+4);
break;
case3: putchar(cs+3); default :putchar(cs+2);}

第1个回答  2011-03-23
:89;追问

可以详细讲解一下吗?我不知道答案是否有错,答案是668977

追答

第一次:getchar()得到2,转化成ASCII为0x32,赋值给CS,减去2的ASCII后为0,所以执行case0语句,但是后面没有break,所以执行完了继续执行case1,输出6;接着执行case2,因为CS的值还是0x32,所以还是输出6。
第二次:getchar()得到4,转化成ASCII为0x34,赋值给CS,减去2的ASCII后为2,所以执行case2语句,输出8
第三次:getchar()得到7,转化成ASCII为0x37,赋值给CS,减去2的ASCII后为5,所以执行default语句,输出9
第四次:getchar()得到3,转化成ASCII为0x33,赋值给CS,减去2的ASCII后为1,所以执行case1语句,输出7,然后接着执行case2语句,又输出7
最后输入的是回车,所以就退出while循环了。
switch语句中的case,完成后必须要跟一个break,不然就会接着执行下面的case语句,直到全部执行完成或者存在break的地方
前面的答案给错了……

本回答被提问者采纳