#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);
default:putchar(c+2);break;
}
} printf("\n");
getch();
}
输入2473 答案怎么来的。。一步一步解释下行不
输入2的时候:
c-'2' = 0
所以从case 0开始执行,直到break;所以输出两个6
输入4
c-'2' = 2
从case 2开始执行,直到break;所以输出8
输入7
c-'2' = 5
但是case段里没有符合的数,所以从default开始执行,直到break;输出9
输入3
c-'2' = 1
从case 1开始执行,直到break;所以输出两个5
最终的结果是668955
同意楼上" 蓅"逝朩颩" 所说,代码有问题,达不到预期效果
你这个程序是获得一个字符 ,只保存第一个数字,比如你先输入2后循环开始因为你用getchar() 这个是获取一个字符的函数。。所以你获取的字符就是'2' 减去'2' ,2的ASCII码是50,就等于0 所以执行case 0:语句,由于没有break语句,他会一直向下执行,直到遇到break跳出switch 所以。2就输出 102102
2: 程序进入case 0: 执行如下内容直到break; case 0:case 1:putchar(c+4);case 2:putchar(c+4);break
4:程序进入case 2: 执行 putchar(c+4);break;
7:程序进入 default:putchar(c+2);break
3:程序进入 case 1:putchar(c+4);case 2:putchar(c+4);break;
结果:668977