C语言问题(帮忙)

来源:百度知道 编辑:UC知道 时间:2024/06/20 13:46:53
运行下面程序,若输入数据为"2473",则输出结果的是_____
#include?<stdio.h>
void main ()
{?char cc;
??cc=getchar();
??while(cc!='\n')
??{switch(cc-'2')
???{?case 0:
?????case 1:putchar(cc+4);
?????case 2:putchar(cc+4);break;
?????case 3:putchar(cc+3);
?????default:putchar(cc+2);
???}
??cc=getchar();
??}
}
答案668977 希望大大说明下答案怎么得出来的(我算的结果总不对 - -!)
2L 这样算第输入字符为2 输出前2位结果应该就是48
但是答案前2位是66?

楼上理解错了吧?能用的.2473
CC=2,
case 0:
?????case 1:putchar(cc+4);
这里因为case 0: 后没有break,就去执行case2了.而switch(cc-'2')'2'-'2'=0
执行case 0.case 1:putchar(cc+4);输出6;
case 2:putchar(cc+4);break; 也是6.
CC=4,
直接执行case 2:putchar(cc+4);break;输出8
'
CC=7,
default:putchar(cc+2); 输出9

CC=3,
case 0:
case 1:putchar(cc+4);输出7
case 2:putchar(cc+4);break =输出7.

再如不明白,加我.

原因出在switch(cc-'2') 中,在这是switch是没有计算能力的

#include?<stdio.h>
void main ()
{?char cc;
??cc=getchar();
??while(cc!='\n')
??{
cc=cc-2;(在这里做减法)
switch(cc)
???{?case 0:
?????case 1:putchar(cc+4);
?????case 2:putchar(cc+4);break;
?????case 3:putchar(cc+3);
?????default:putchar(cc+2);
???}
??cc=getchar();
??}
}

问题出在你的break上;
先进来2,在case 1 那putchar了一下,然后又在case 2那儿putchar了一下,所以出来两个