求解一道简单的C程序循环结构的题目,我自己写错了,不知道为什么答案是那样,求高手帮忙分析一下,

#include<stdio.h>voidmain(){intI,m=0,n=0,k=0;for(I=5;I<=7;I++)switch(i/6){case0:m++;n... #include<stdio.h>
void main()
{ int I,m=0,n=0,k=0;
for(I=5;I<=7;I++)
switch(i/6)
{ case 0: m++; n++;
case 6: n++;break;
default: k++; n++;
}
printf("%d,%d,%d/n",m,n,k);
}
输出结果:
这个题目我算输出结果是1,3,2 可是答案是1,4,2
请问为什么,求高手详细解答过程!!拜托了!!!
展开
 我来答
江谧
2012-04-24
知道答主
回答量:2
采纳率:0%
帮助的人:5.9万
展开全部
第一次除以6得0的时候,由于case0:m++;n++;这句话后面没有break,进入了case6那里执行n++,直到遇见break才退出,case只是一个标志语句入口的标号,需要在后面添加break,才不会执行下面的语句。
百度网友79054ee
2012-04-24 · TA获得超过190个赞
知道小有建树答主
回答量:196
采纳率:0%
帮助的人:130万
展开全部
case 0: m++; n++;
case 6: n++;break;
第一个CASE后如果没BREAK,会一直执行下去,直到遇到BREAK或者块结束
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
皖学箭08
2012-04-24 · TA获得超过415个赞
知道小有建树答主
回答量:275
采纳率:0%
帮助的人:333万
展开全部
第一个case没有break,第二个case多执行一次
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
show81925
2012-04-24
知道答主
回答量:17
采纳率:0%
帮助的人:14.1万
展开全部
首先得明白case语句是顺序比较执行的,如果里面没有break,程序会继续执行下一条case语句。
上面的程序里,case 0: m++; n++;这条语句里由于没有break,
第一次for循环,由于(i/6)的结果是0,程序在执行了case0下面的语句后,并不跳出(因为没有break),然后继续向下执行case6:语句,执行完后遇到break后才退出,然后才开始第二次for循环。
不知道是否明白了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雨落断魂
2012-04-24
知道答主
回答量:14
采纳率:0%
帮助的人:2.4万
展开全部
当i=5时,当case 0: m++; n++;执行完过后,会继续执行 case 6: n++;break;,然后跳出。楼主应该是少算了一个 n++。如果改成case 0: m++; n++;break;那么计算的结果就是1,3,2。你可以去看下switc语句的用法。

参考资料: C语言程序教程

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式