error C2044: illegal continue!break 和continue的用法

来源:互联网 发布:杭州知名企业 知乎 编辑:程序博客网 时间:2024/05/05 06:34

break 和continue都是用来控制循环的流程。


break结束循环,不执行循环中剩余的语句


continue 结束当前的迭代,跳转到循环的顶部,及循环开始的位置,继续执行迭代


1、break
C语言中的break可以用在两个地方:
(1)用在switch中,作用是使程序流程转到switch语句之后的语句去执行。
(2)用在循环中,作用是转到循环语句之后的语句执行。
要注意的是,如果switch语句或循环语句是嵌套的,那break都只能跳出它所在的switch或循环,而不是跳出所有switch或所有循环。
例如:
for(i = 1; i <= 10; i++)
  for(j = 1;  j <= 10;  j++)
     if(i == j)
       break;  
代码中的break在内循环中,它使程序跳出内循环,外循环将继续进行。


2、continue
continue只能用在循环中,作用是跳过本次循环剩下的部分,转去执行下一次循环。对于for循环,只要遇到continue,便转到for后面括号里的第三个表达式。
注意:
continue不能用在单纯的switch语句中,除非switch在循环中或循环在switch中,这种情况下continue是对循环起作用而不是对switch。如果没有循环,单纯的switch中出现continue是一个语法错误。


使用案例:

#include<stdio.h>int main (void){int i,j,n,x,a[10];printf("输入数据的个数n:");scanf("%d",&n);printf("输入%d个整数:",n);for(i=0;i<n;i++);scanf("%d",&a[i]);printf("输入要插入的整数:");scanf("%d",&x);for(i=0;i<n;i++);{if(x>a[i]) continue;j=n-1;while(j>=i){a[j]=a[j+1];j++;}a[i]=x;break;}if(i==n)a[n]=x;for(i=0;i<n+1;i++)printf("%d",a[i]);putchar('\n');return 0;}



错误案例:

#include <iostream>using namespace std;int main(){char i;cout<<"Menu:A(dd) D(elete) S(ort) Q(uit) Select One:"<<endl;         cin>>i;if (i=='A'){cout<<"增"<<endl;    continue;}else if (i=='D'){cout<<"删"<<endl;continue;}else if (i=='S'){cout<<"排序"<<endl;continue;}else if (i=='Q'){cout<<"退出"<<endl;continue;}else {cout<<"无此操作符"<<endl;break;}    return 0;}


最后来一个,大家可以看看哪里出问题了!

#include<stdio.h>int main(void){char ch ;while((ch=getchar()) ! = '#'){if(ch=='\n')continue;printf("Step 1 \n");if(ch=='c')continue;else if (ch=='b')break;else if (ch == 'g')goto laststep;printf("Step 2 \n");laststep:printf("Step 3 \n");}printf("Done \n");return 0;}



0 0
原创粉丝点击