c语言,为什么输入2473后结果是668977,程序是怎么运行的?

#include "stdio.h"
main()
{int c;
while((c=getchar())!='\n')
{switch(c-50)
{ case 0:
case 1:putchar(c+4);
case 2:putchar(c+4);break;
case 3:putchar(c+3);
default:putchar(c+2);break;
}
}
printf("\n");
}
switch(c-50)
改为switch (c-'2')
printf 上去掉一个{

输入2473
循环接收:
1. 接收2,即c=‘2’,减去'2',结果为0,就会走case 0,1,2,就会输出两个c+4,即输出两个6
2.接收4,即c=‘4’,减去'2',结果为2,就会走case 2,就会输出一个c+4,即输出8
3.接收7,即c=‘7’,减去'2',结果为5,就会走default,就会输出一个c+2,即输出9
4.接收3,即c=‘3’,减去'2',结果为1,就会走case 1,2,就会输出两个c+4,即输出两个7
所以结果就是668977
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-25
你输入2473,当为2时,进入switch语句(2的ASKII码是50)则为case 0:没处理
接着是case1输出c+4也就是6。但是还是没退出,接着case3还是c+4输出6。然后是你的4(4的ASKII码是52),则为case2输出8,同理7输出9,那么3输出77。故为668977
第2个回答  2012-05-26
童鞋,你那个2473系统把他理解成字符了 然后2的ASCII码是50 然后50-50等于0 执行第一个
由于没有break所以执行前俩 还是ascii吗 都是6 后边你一次类推吧
建议都加上break
第3个回答  2012-05-25
c=getchar(),你设的是输入一个字符,输入2473肯定错啊
第4个回答  2012-05-25
你定义的是整型,输入是字符串型,输出也是字符串型。
有变化不正常么?
相似回答