下面的程序语法错误是在什么地方?求助,我理解的答案是d。。

在线求解答,满意多给分!

       分析:首先swtich语句提供一种更方便的方法来实现深层嵌套的if/else语句。switch语句中最常见的错误是漏写了break语句,一般情况是在每个case分支后加break语句(少数情况是例外的)。详细的可以参考C++ primer(第四版)的172页。其实这个题目的输出就是(16,21,)。这可能会和设计者的意愿相违背。

      解答:由于case都没有break;所以i=0的时候,case 0 ,case 1,case 5,default按顺序执行,i=16=5+2+5+4,输出16,;循环一次后i++,i=17,所以第二次初始i=17,只执行default 故输出21=17+4,第二次输出的是21,。所以最终的输出是(16,21,)你准备选d?错了!注意最后21后面有个逗号的,所以貌似这几个选项都不是很好,只能说它是语法错误,选e了。(这个题目出的比较烂)。

      验证:VS2012,键入代码,调试,运行。输出结果见图片。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-13
楼主你好:

你要知道switch的语法,

以下是对的,你可以比对一下:
switch(i)
{
case 0:
case 1:
case 5:
.....这里做计算操作
break;
default:
......计算操作
break;
}
defaut指的是上面所有case都不满足时会进这个default,
switch(i)
{
case 0: i+=5; //这里既然已经做了操作,就一定要有 break,缺少break
case 1: i+=2; //这里既然已经做了操作,就一定要有 break,缺少break
case 5: i+=5;// //这里既然已经做了操作,就一定要有 break,缺少break
.....这里做计算操作
break;
}

switch中case分支没有break就会失去他本身的意义~~

另你的prinft("%d,",i); 貌似多了个逗号吧~~
希望对你有帮助,纯手打,望采纳,谢谢
第2个回答  2013-08-13
d 刚刚谢了下,验证了
相似回答