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

2025-03-20 15:06:36
推荐回答(5个)
回答1:

第一次除以6得0的时候,由于case0:m++;n++;这句话后面没有break,进入了case6那里执行n++,直到遇见break才退出,case只是一个标志语句入口的标号,需要在后面添加break,才不会执行下面的语句。

回答2:

case 0: m++; n++;
case 6: n++;break;
第一个CASE后如果没BREAK,会一直执行下去,直到遇到BREAK或者块结束

回答3:

第一个case没有break,第二个case多执行一次

回答4:

首先得明白case语句是顺序比较执行的,如果里面没有break,程序会继续执行下一条case语句。
上面的程序里,case 0: m++; n++;这条语句里由于没有break,
第一次for循环,由于(i/6)的结果是0,程序在执行了case0下面的语句后,并不跳出(因为没有break),然后继续向下执行case6:语句,执行完后遇到break后才退出,然后才开始第二次for循环。
不知道是否明白了?

回答5:

当i=5时,当case 0: m++; n++;执行完过后,会继续执行 case 6: n++;break;,然后跳出。楼主应该是少算了一个 n++。如果改成case 0: m++; n++;break;那么计算的结果就是1,3,2。你可以去看下switc语句的用法。