C语言error C2043: illegal break

#include<stdio.h>
#include<math.h>
main()
{
int a,b,c,d;
scanf("%d",&a);
for(b=3;b<a/2;b+=2)
for(c=2;c<sqrt(b);c++)
if(b%c==0)break;
if(c>sqrt(b))
d=a-b;
else break;
for(c=2;c<=sqrt(d);c++)
if(d%c==0)
break;
if(c>sqrt(d))
printf("%d=%d+%d\n",a,b,d);
return 0;
}

error C2043: illegal break
求解啊~

break; 只能用于for/while/switch语句中你for后面多写了一个 ;

导致break;不在for里面了for(i=2;i<=k;i++);

break的用法:

1、终止循环

此时用于for do while while循环语句中

2、终止switch

用于switch的case语句中

3、不能用于if语句中,除非if属于循环内部的一部分

所以当单独使用一个if语句,在其中写时break不是忽略,是错误。

扩展资料:

c语言程序改写技巧:

1、以下是一个C语言程序,本人以此为例与大家分享C语言修改为C++语言的技巧。

2、首先,需要修改头文件,将其修改为iostream。

3、接着,在C++语句中添加名字空间。

4、修改输入语句,将scanf修改为cin语句。

5、修改输出语句,将printf语句修改为cout语句。

6、最后,在C++程序中,添加返回值语句。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-05-08
这么眼熟呢?
#include<stdio.h>
#include<math.h>
int main()
{
int a,b,c,d;
scanf("%d",&a);
for(b=3;b<a/2;b+=2)
{
for(c=2;c<sqrt(b)+1;c++)
if(b%c==0) break;
if(c>sqrt(b))
{
d=a-b;
for(c=2;c<=sqrt(d)+1;c++)
if(d%c==0)
break;
if(c>sqrt(d))
printf("%d=%d+%d\n",a,b,d);
}
else
continue;
}
system("pause ");
return 0;
}
改好了的本回答被提问者采纳
第2个回答  2009-03-14
注意,下面只比原程序多加了2个花括号
#include<stdio.h>
#include<math.h>
main()
{
int a,b,c,d;
scanf("%d",&a);
for(b=3;b<a/2;b+=2)
for(c=2;c<sqrt(b);c++)
{if(b%c==0) break;
if(c>sqrt(b))
d=a-b;
else break; }
for(c=2;c<=sqrt(d);c++)
{if(d%c==0)
break;
if(c>sqrt(d))
printf("%d=%d+%d\n",a,b,d);}
return 0;
}
第3个回答  2009-03-11
if(c>sqrt(b))
d=a-b;
else break
这组语句已经不属于for循环体了
若for循环内含有多条语句的话应该用{}括起来。
而break应该用在循环内部
第4个回答  2009-03-12
循环的话至少要把循环的代码用{}括起来吧………汗………
你的break没有被包含在循环里面当然会出错啦。
相似回答