
一道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? 展开
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? 展开
3个回答
展开全部
注意只有遇到 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。
① 处理 '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。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在用case上面,如果没有break,会继续执行下面的语句,知道出现break为止
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个问题我也遇过其实是这样的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语句很不符合语法!
① 处理 '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语句很不符合语法!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |