A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© moon_H 中级黑马   /  2015-2-22 23:49  /  778 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#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 个回复

倒序浏览
1、输入2,c-'2'=0,执行case 0,继续执行case 1,输出6,没有break,所以继续case 2,再输出第二个6,遇到break,结束。
回复 使用道具 举报
superdite 发表于 2015-2-23 10:10
1、输入2,c-'2'=0,执行case 0,继续执行case 1,输出6,没有break,所以继续case 2,再输出第二个6,遇到break ...

1、输入2,c-'2'=0,执行case 0,继续执行case 1,输出6,没有break,所以继续case 2,再输出第二个6,遇到break,结束。
2、输入4,c-'2'=2,执行case 2,输出8,遇到break,结束。
3、输入7,c-'2'=5,执行default,输出9,遇到break,结束。
4、输入3,c-'2'=1,执行case 1,输出7,所以继续case 2,再输出第二个7,遇到break,结束。

所以输出的是668977
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马