首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

c基础有关问题,求指点

2012-09-19 
c基础问题,求大虾指点#includestdio.hmain(){int cwhile((cgetchar())!\n){switch(c-2){case 0:c

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);
case 4:putchar(c+3);break;
}}
printf("\n");


}输入2743得到66877为什么?

[解决办法]
输入2的时候,case 1和case 2响应输出两个6
输入7的时候,什么都不输出
输入4的时候,case 2响应输出一个8
输入3的时候,case 1和case 2响应输出两个7
[解决办法]
道理很简单, 首先根据你的程序,你的c 一次从标准流中得到一个字符。 然后遇到换行符号,终止循环。

在循环内部有一个switch case 语句,来检查输入,以输出相应的结果。

好,这里根据你给出的输入数据: 2 7 4 3。我们来分析

step1: 输入2时, switch(c - '2') 得到 0 , 来到case 0:处, 由于没有break,所以继续向下,来到case1处,输出putchar(c + 4)得到字符'6', 输出 6, 由于又没有break语句,所以继续向下,再一次执行putchar(c + 4) 输出字符'6',由于这一次有break语句,所以跳出switch语句块。继续下一次循环。

step2: 输入7时, switch(c - '2') 得到 5, 没有case 可以匹配。 所以switch语句结束。 继续下一次循环。

step3: 输入4时, switch(c - '2') 得到 2, 于是跳到 case 2处。 执行putchar(c + '4')得到字符'8',输出。 然后遇到break. 跳出switch语句块。 继续下一次循环。

step4: 输入3时, switch(c - '2') 得到 1, 于是跳到 case 1处。 同step1处的分析相同。 结果输出2个字符'7'。

最后,遇到换行符号, 退出循环, 输出一个换行,程序结束。

 
[解决办法]
记住在满足case条件之后,如果没有break,程序会往下接着执行
[解决办法]
楼主 switch()都没弄懂吗? 

break 就像一扇门,有break,程序就能出去(出switch),否则继续执行下面的即使case不匹配也要执行!
[解决办法]

探讨
输入2的时候,case 1和case 2响应输出两个6
输入7的时候,什么都不输出
输入4的时候,case 2响应输出一个8
输入3的时候,case 1和case 2响应输出两个7

[解决办法]
要养成良好代码书写的习惯

热点排行