
求解一道简单的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
请问为什么,求高手详细解答过程!!拜托了!!! 展开
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
请问为什么,求高手详细解答过程!!拜托了!!! 展开
5个回答
展开全部
第一次除以6得0的时候,由于case0:m++;n++;这句话后面没有break,进入了case6那里执行n++,直到遇见break才退出,case只是一个标志语句入口的标号,需要在后面添加break,才不会执行下面的语句。
展开全部
case 0: m++; n++;
case 6: n++;break;
第一个CASE后如果没BREAK,会一直执行下去,直到遇到BREAK或者块结束
case 6: n++;break;
第一个CASE后如果没BREAK,会一直执行下去,直到遇到BREAK或者块结束
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个case没有break,第二个case多执行一次
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先得明白case语句是顺序比较执行的,如果里面没有break,程序会继续执行下一条case语句。
上面的程序里,case 0: m++; n++;这条语句里由于没有break,
第一次for循环,由于(i/6)的结果是0,程序在执行了case0下面的语句后,并不跳出(因为没有break),然后继续向下执行case6:语句,执行完后遇到break后才退出,然后才开始第二次for循环。
不知道是否明白了?
上面的程序里,case 0: m++; n++;这条语句里由于没有break,
第一次for循环,由于(i/6)的结果是0,程序在执行了case0下面的语句后,并不跳出(因为没有break),然后继续向下执行case6:语句,执行完后遇到break后才退出,然后才开始第二次for循环。
不知道是否明白了?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当i=5时,当case 0: m++; n++;执行完过后,会继续执行 case 6: n++;break;,然后跳出。楼主应该是少算了一个 n++。如果改成case 0: m++; n++;break;那么计算的结果就是1,3,2。你可以去看下switc语句的用法。
参考资料: C语言程序教程
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询