一道C的题,帮忙分析一下,答案是668977

来源:百度知道 编辑:UC知道 时间:2024/05/24 23:50:23
#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");
}
是呀,输入为2473,输出为668977,请帮忙解释具体点,比如为什么当输入为2时,输出为66?输入为4时,输出为8,输入为7时,输出为9,输入为3时输出为77,本人为初学者,还请多赐教,不胜感激!

看'2'
switch(c-'2') //'2'-'2'=0
{ case 0:
case 1:putchar(c+4);//输出'6'
case 2:putchar(c+4);break; //输出'6'跳出去
case 3:putchar(c+3);
default :putchar(c+2);break;
}

看'4'
switch(c-'2') //'4'-'2'=2
{ case 0:
case 1:putchar(c+4);
case 2:putchar(c+4);break; //输出'8'跳出去
case 3:putchar(c+3);
default :putchar(c+2);break;
}

看'7'
switch(c-'2') //'7'-'2'=5
{ case 0:
case 1:putchar(c+4);
case 2:putchar(c+4);break;
case 3:putchar(c+3);
default :putchar(c+2);break;//输出'9'跳出去
}

看'3'
switch(c-'2') //'3'-'2'=1
{ case 0:
case 1:putchar(c+4);//输出'7'
case 2:putchar(c+4);break;//输出'7'跳出去
case 3:putchar(c+3);
default :put