当前位置: 代码迷 >> C语言 >> [求助]新手问C语言问题
  详细解决方案

[求助]新手问C语言问题

热度:405   发布时间:2006-09-04 22:36:26.0
[求助]新手问C语言问题
#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;}
}
}
从第一列开始输入2473<回车>
答案显示的是输出结果为668977
我想的应该是输出6897 为什么会有两个6和7呢
高手帮个忙啊
谢谢了
搜索更多相关的解决方案: C语言  

----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

2006-09-04 14:38:47
nuciewth

来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9791
专家分:183
注 册:2006-5-23
  得分:0 
真的要看看书了.
对与没有break语句的case,它会自动执行其下的语句,直到出现break,或者switch已经结束.
----------------解决方案--------------------------------------------------------
while((c=getchar())!='\n')
{switch(c-'2') //当输入2时,C-2=0
{case 0:case 1:putchar(c+4); //switch=0来到这句,做完后没碰到break,于是输出 6 后继续做下句
case 2:putchar(c+4);break; //这句做完后,输出 6 后,碰到break,跳出去


----------------解决方案--------------------------------------------------------

我看了一下。程序是没有错误的!那要看你的break和continue掌握的怎么样啊!你要是想输出6897的话,你就这样
#include<stdio.h>
void main()
{
int c;
while((c=getchar())!='\n')
{
switch(c-'2')
{
case 0:
case 1:putchar(c+4);break; // 每个后面都加上break;
case 2:putchar(c+4);break;
case 3:putchar(c+3);break;
default:putchar(c+2);break;
}
}
}


----------------解决方案--------------------------------------------------------

谢谢大家了 我是刚学习C语言 有的东西不是一下就能想到
谢谢大家提醒了


----------------解决方案--------------------------------------------------------
  相关解决方案