lxg@@@ 发表于 2017-3-6 22:13:24

求解答break和continue的问题

这是在做国二练习题中发现的问题,看了解析,还是不能理解break和continue的区别,总觉得A也是对的,break和continue难道不是都只能跳出switch吗?

lxg@@@ 发表于 2017-3-6 22:17:13

还有我把这段代码打到VC6.0里面运行的时候出现下面这种错误;
error C2143: syntax error : missing '{' before '<'
error C2143: syntax error : missing '{' before '++'

可是我看不出来哪里出了问题

人造人 发表于 2017-3-6 22:19:54

没有main函数^_^

fsd82ht 发表于 2017-3-6 22:56:03

#include <stdio.h>
int i, n;
int main()
{
        for(i=0; i<8; i++)
        {
                n= rand() % 5;
                switch (n)
                {
                case 1:
                case 3: printf("%d \n", n);break;
                case 2:
                case 4: printf("%d \n", n);continue;
                case 0: exit(0);
                }
                printf("%d \n, n");
        }
        return 0;
}

kai759630 发表于 2017-3-6 23:57:23

本帖最后由 kai759630 于 2017-3-7 00:12 编辑

要知道break能用于循环结构中和switch结构中,而continue只能用在循环结构中的,表示提前结束本次循环,然而这里容易混淆的地方是break到底是只退出这个选择结构接着执行循环呢,还是直接退出这个循环体不再执行循环呢?另外这里的exit的功能是什么?这里我用代码给你示范下:

#include<stdio.h>
#include<stdlib.h>
void main()
{
      int n,i ;//这里n用做选择结构和后面输出提示
      int m=0;//m用来记录循环执行了几次
      printf("请输入n的值\n");
      scanf("%d",&n);
      for(i=0;i<8;i++)
      {
                switch (n)
                {

                        case 0: n=3;break;//当输入的n=0时,n=3,break。
                        case 1: n=4;break;
                        case 2: n=5;continue;
                        case 4: exit(0);

                }
                m++;
      }
      printf("执行了%d次\n",m);//看下循环到底执行了多少次以便看出这里break的功能
      printf("n=%d",n);
}


这里看到,当输入n=0时,循环体循环了8次,并把3赋值给了n,说明这里的break是只退出这个选择结构接着执行循环,所以才可能执行八次循环(m才能自加八次嘛!)。

这里看到,当输入n=2时,循环体循环了7次,并把5赋值给了n,说明这里continue结束了当次循环,所以本次循环m不需要自加1,再执行循环所以循环了7次。

(由于没截好图,文件发布有限,这里后面不显示任何东西)这里看到,当输入n=4时,整个程序直接退出且不报错,说明这里的exit的功能是正常终止程序。
所以A选项不是错在有break而是由于这个exit(0)的缘故!

圈十八 发表于 2017-3-7 10:48:19

如果提前出现0 程序会退出 不会固定执行8次

lxg@@@ 发表于 2017-3-7 14:04:24

人造人 发表于 2017-3-6 22:19
没有main函数^_^

好吧{:10_266:}

lxg@@@ 发表于 2017-3-7 14:05:09

fsd82ht 发表于 2017-3-6 22:56
#include
int i, n;
int main()


好的,谢谢{:9_240:}

lxg@@@ 发表于 2017-3-7 14:10:01

kai759630 发表于 2017-3-6 23:57
要知道break能用于循环结构中和switch结构中,而continue只能用在循环结构中的,表示提前结束本次循环,然 ...

谢谢,终于弄懂这两个的区别了{:9_228:}

lxg@@@ 发表于 2017-3-7 14:10:37

圈十八 发表于 2017-3-7 10:48
如果提前出现0 程序会退出 不会固定执行8次

谢谢,终于弄懂了{:9_232:}

kai759630 发表于 2017-3-7 14:22:41

lxg@@@ 发表于 2017-3-7 14:10
谢谢,终于弄懂这两个的区别了

哈哈 以前我也弄不清{:5_91:}
页: [1]
查看完整版本: 求解答break和continue的问题