鱼C论坛

 找回密码
 立即注册
查看: 1936|回复: 10

[已解决]求解答break和continue的问题

[复制链接]
发表于 2017-3-6 22:13:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这是在做国二练习题中发现的问题,看了解析,还是不能理解break和continue的区别,总觉得A也是对的,break和continue难道不是都只能跳出switch吗?
最佳答案
2017-3-6 23:57:23
本帖最后由 kai759630 于 2017-3-7 00:12 编辑

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

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

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

  17.                 }
  18.                 m++;
  19.         }
  20.         printf("执行了%d次\n",m);//看下循环到底执行了多少次以便看出这里break的功能
  21.         printf("n=%d",n);
  22. }
复制代码

@9RTZQHU~@G)D0P@CXVX7%V.png
这里看到,当输入n=0时,循环体循环了8次,并把3赋值给了n,说明这里的break是只退出这个选择结构接着执行循环,所以才可能执行八次循环(m才能自加八次嘛!)。
4PMVX49CID~_1Y1OW}(G)73.png
这里看到,当输入n=2时,循环体循环了7次,并把5赋值给了n,说明这里continue结束了当次循环,所以本次循环m不需要自加1,再执行循环所以循环了7次。
EG)437`Y18MZGH~$WNO6L.png
(由于没截好图,文件发布有限,这里后面不显示任何东西)这里看到,当输入n=4时,整个程序直接退出且不报错,说明这里的exit的功能是正常终止程序。
所以A选项不是错在有break而是由于这个exit(0)的缘故!
QQ截图20170306220902.png
QQ截图20170306220914.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-3-6 22:17:13 | 显示全部楼层
还有我把这段代码打到VC6.0里面运行的时候出现下面这种错误;
error C2143: syntax error : missing '{' before '<'
error C2143: syntax error : missing '{' before '++'

可是我看不出来哪里出了问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-6 22:19:54 | 显示全部楼层
没有main函数^_^
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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;
}

VC++6.0结果

VC++6.0结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-6 23:57:23 | 显示全部楼层    本楼为最佳答案   
本帖最后由 kai759630 于 2017-3-7 00:12 编辑

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

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

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

  17.                 }
  18.                 m++;
  19.         }
  20.         printf("执行了%d次\n",m);//看下循环到底执行了多少次以便看出这里break的功能
  21.         printf("n=%d",n);
  22. }
复制代码

@9RTZQHU~@G)D0P@CXVX7%V.png
这里看到,当输入n=0时,循环体循环了8次,并把3赋值给了n,说明这里的break是只退出这个选择结构接着执行循环,所以才可能执行八次循环(m才能自加八次嘛!)。
4PMVX49CID~_1Y1OW}(G)73.png
这里看到,当输入n=2时,循环体循环了7次,并把5赋值给了n,说明这里continue结束了当次循环,所以本次循环m不需要自加1,再执行循环所以循环了7次。
EG)437`Y18MZGH~$WNO6L.png
(由于没截好图,文件发布有限,这里后面不显示任何东西)这里看到,当输入n=4时,整个程序直接退出且不报错,说明这里的exit的功能是正常终止程序。
所以A选项不是错在有break而是由于这个exit(0)的缘故!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-3-7 10:48:19 | 显示全部楼层
如果提前出现0 程序会退出 不会固定执行8次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-7 14:04:24 | 显示全部楼层

好吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-7 14:05:09 | 显示全部楼层
fsd82ht 发表于 2017-3-6 22:56
#include
int i, n;
int main()

好的,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-7 14:10:01 | 显示全部楼层
kai759630 发表于 2017-3-6 23:57
要知道break能用于循环结构中和switch结构中,而continue只能用在循环结构中的,表示提前结束本次循环,然 ...

谢谢,终于弄懂这两个的区别了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-7 14:10:37 | 显示全部楼层
圈十八 发表于 2017-3-7 10:48
如果提前出现0 程序会退出 不会固定执行8次

谢谢,终于弄懂了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-7 14:22:41 | 显示全部楼层
lxg@@@ 发表于 2017-3-7 14:10
谢谢,终于弄懂这两个的区别了

哈哈 以前我也弄不清
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-3 03:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表