求解答break和continue的问题
这是在做国二练习题中发现的问题,看了解析,还是不能理解break和continue的区别,总觉得A也是对的,break和continue难道不是都只能跳出switch吗? 还有我把这段代码打到VC6.0里面运行的时候出现下面这种错误;error C2143: syntax error : missing '{' before '<'
error C2143: syntax error : missing '{' before '++'
可是我看不出来哪里出了问题 没有main函数^_^ #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-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)的缘故! 如果提前出现0 程序会退出 不会固定执行8次 人造人 发表于 2017-3-6 22:19
没有main函数^_^
好吧{:10_266:} fsd82ht 发表于 2017-3-6 22:56
#include
int i, n;
int main()
好的,谢谢{:9_240:} kai759630 发表于 2017-3-6 23:57
要知道break能用于循环结构中和switch结构中,而continue只能用在循环结构中的,表示提前结束本次循环,然 ...
谢谢,终于弄懂这两个的区别了{:9_228:} 圈十八 发表于 2017-3-7 10:48
如果提前出现0 程序会退出 不会固定执行8次
谢谢,终于弄懂了{:9_232:} lxg@@@ 发表于 2017-3-7 14:10
谢谢,终于弄懂这两个的区别了
哈哈 以前我也弄不清{:5_91:}
页:
[1]