C语言的一道计算结果分析试题,百思不得其解,大家分析下,谢了

[复制链接]
查看11 | 回复3 | 2012-3-25 22:32:27 | 显示全部楼层 |阅读模式
2473while((c=getchar())!=’\n’){switch(c-‘2’)
{
case 0:case 1:putchar(c+4); //第一次输入c=‘2’,c-'2'=0,走到这里,输出c+4='2'+4='6'没有break继续下面case 2的语句 再输出一次c+4=6
第四次输入3,c-'2'=1走到这里,同第一次会输出两个c+4=‘7’case 2:putchar(c+4);break; //第二次输入'4' c-'2'=2走到这里,输出c+4='4'+4='8'然后breakcase 3:putchar(c+3);default:putcha...
回复

使用道具 举报

千问 | 2012-3-25 22:32:27 | 显示全部楼层
A第一个输入的是2,执行putchar(c+4),也就是6,但是这里没有break,程序就继续执行下一个case,执行putchar(c+4),还是6;第二个输入的是4,满足case 2,执行putchar(c+4),8第三个是7,执行default,输出9第四个是3,满足case1,执行putchar(c+4),输出7,这里没有break,...
回复

使用道具 举报

千问 | 2012-3-25 22:32:27 | 显示全部楼层
switch-case语句不碰到break是不会跳出的,例如第一个输入的‘2’,2-2=0,从case 0处执行,可case 0处没有break则继续执行case 1,输出6,再执行case 2输出6,这时遇到了break会跳出switch-case语句组。4-2=2,从case 2处执行,直接加4输出8。7-2=5,从default处执行,输出7+2=...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行