C语言error C2043: illegal break

来源:百度知道 编辑:UC知道 时间:2024/06/09 04:15:35
#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
求解啊~

if(c>sqrt(b))
d=a-b;
else break
这组语句已经不属于for循环体了
若for循环内含有多条语句的话应该用{}括起来。
而break应该用在循环内部

注意,下面只比原程序多加了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;
}

循环的话至少要把循环的代码用{}括起来吧………汗………
你的break没有被包含在循环里面当然会出错啦。

这么眼熟呢?
#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&g