雪域王国 发表于 2014-3-27 11:09:22

求助:为什么结果是 j=6; i=6.???

#include <stdio.h>
main()
{
int i , j ;
for (i=0;i<6;i++)
          for (j=1;j<12;j++)
          {
          if (j==6)break ;
                if (i<3)   continue;
          }
          printf("j=%d\n",j);
          printf("i=%d\n",i);
          getch();
          
}

杨学子 发表于 2014-3-27 11:20:28

没错的 你可能没注意到{} 符合的范围
#include <stdio.h>
main()
{
int i , j ;
for (i=0;i<6;i++) {
          for (j=1;j<12;j++)
          {
            if (j==6)break ;
                if (i<3)   continue;
          }
          printf("j=%d\n",j);
          printf("i=%d\n",i);
          //getchar();
}
         
}

CS007 发表于 2014-3-27 11:29:04

内嵌循环。。。同意楼上的!!!!!

福禄娃娃 发表于 2014-3-27 11:43:10

本帖最后由 福禄娃娃 于 2014-3-27 11:56 编辑

1. break语句对if-else的条件语句不起作用。

2. 在多层循环中, 一个break语句只向外跳一层。

3. continue语句的作用是跳过本循环中剩余的语句而强行执行下一次循环。

4. continue语句只用在for、while、do-while等循环体中, 常与if条件语句一起使用, 用来加速循环。
for循环最好加大括号{ },不加大括号则只循环for之后的第一句代码。{}其实就是设定了for循环的范围
由于你外层for循环少了一个大括号,所以最后printf只当执行完循环后输出一次结果如果外层for循环加了大括号的话输出结果如下:
j=6
i=0
j=6
i=1
j=6
i=2
j=6
i=3
j=6
i=4
j=6
i=5
i 最后的值为6,但是printf输出 i 的值为5.因为 i 还会自增一次。

程序执行时外层循环 i 从 0开始,接着进入内层循环
内层循环 j 从 1自增到6而退出内循环到外循环
i 自增一次再次进入内层循环
以此类推
当 i = 5 和 j = 6时,跳出内循环,i自增到6,外循环条件不符合跳出,输出结果。所以你的答案是 i = 6 , j =6

雪域王国 发表于 2014-3-27 12:31:14

福禄娃娃 发表于 2014-3-27 11:43 static/image/common/back.gif
1. break语句对if-else的条件语句不起作用。

2. 在多层循环中, 一个break语句只向外跳一层。


谢谢,有点明白了!

最好是明天 发表于 2014-3-27 14:33:56

执行结果应该i=6j=6吧

被遗忘的指环 发表于 2014-3-28 03:44:46

看看·························

weiyio1 发表于 2014-3-28 17:43:37

学习、、、、、

牡丹花下死做鬼 发表于 2014-3-28 19:56:03

不然 呢 你加上 { }在看看吧应该会清楚点
页: [1]
查看完整版本: 求助:为什么结果是 j=6; i=6.???