一道C语言问题

#include<stdio.h>main(){intc;while((c=getchar())!='\n'){switch(c-'2'){case0:case1:put... #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?
展开
 我来答
dongyue2008
2011-02-06 · TA获得超过3605个赞
知道大有可为答主
回答量:1300
采纳率:100%
帮助的人:641万
展开全部
注意只有遇到 break 才会退出 switch,否则会依次执行各个 case。输入2473,处理过程如下:
① 处理 '2',满足 case 0,依次执行 case 0、case 1、case 2 下的语句,输出:66。
② 处理 '4',满足 case 2,执行 case 2 下的语句,输出:8。
③ 处理 '7',满足 default,执行 default 下的语句,输出:9。
④ 处理 '3',满足 case 1,依次执行 case 1、case 2 下的语句,输出:77。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zxy986490897
2011-02-06
知道答主
回答量:52
采纳率:0%
帮助的人:25.1万
展开全部
在用case上面,如果没有break,会继续执行下面的语句,知道出现break为止
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
誓言与梦
2011-02-06 · TA获得超过414个赞
知道答主
回答量:230
采纳率:100%
帮助的人:0
展开全部
这个问题我也遇过其实是这样的getchar读入是一个字符,字符在C语言中是被设定为某个值。上面的情况可以这样解析:

① 处理 '2',满足 case 0,依次执行 case 0、case 1、case 2 下的语句,输出:66。
② 处理 '4',满足 case 2,执行 case 2 下的语句,输出:8。
③ 处理 '7',满足 default,执行 default 下的语句,输出:9。
④ 处理 '3',满足 case 1,依次执行 case 1、case 2 下的语句,输出:77。

因为getchar一次读入一个字符(注意),字符在C语言中是被设定为某个值(注意),所以输入2473相当于2,4,7,3四个字符,它代表相应的的值。所以计算结果668977,你可以试试,
如果你想得到数值的话可以用scanf("%d",&c);

另外如上面所说,
在用case上面,如果没有break,会继续执行下面的语句,知道出现break为止。
switch语句很不符合语法!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式