猿问

我想知道的是,为什么我改成下面这样就不正确了呢?

有这么一个程序,作用是求一个数字分解成两个质数之和,我的编写是:(此编写是正确的)
#include <iostream>using namespace std;
int main()
{
int m,a,b,i,j;
bool x;
cin>>m;
for (a=3;a<=m/2;a++)
{
x=0;
for (i=2;i<=a/2;i++)
{
if (a%i==0)
x=1;
}
if (x==1)
continue;
b=m-a;
for (j=2;j<=b/2;j++)
{
if (b%j==0)
x=1;
}
if (x==1)
continue;
cout<<a<<" "<<b<<endl;
}

return 0;}

我想知道的是,为什么我改成这样就不正确了呢?
#include <iostream>using namespace std;
int main()
{
int m,a,b,i,j;
bool x;
cin>>m;
for (a=3;a<=m/2;a++)
{
x=0;
for (i=2;i<=a/2;i++)
{
if (a%i==0)
x=1;break;
}
if (x==1)
continue;
b=m-a;
for (j=2;j<=b/2;j++)
{
if (b%j==0)
x=1;break;
}
if (x==1)
continue;
cout<<a<<" "<<b<<endl;
}

return 0;}

注意,我只在循环语句中加入了两个break语句

波斯汪
浏览 166回答 4
4回答

守候你守候我

break 语句用于终止最近的封闭循环或它所在的 switch 语句。 控制传递给终止语句后面的语句(如果有的话)。

慕容森

C++中break语句主要用在循环语句和switch语句中。下面举例来说明break的用法:1、break用在循环语句中(以for循环为例)。如:int&nbsp;i;for(i=0;&nbsp;i<10;&nbsp;i++){&nbsp;&nbsp;&nbsp;&nbsp;if(i>3)&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;如果i>3,跳出for循环,执行printf语句&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;}printf("%d",&nbsp;i);2、break用在switch语句中。如:int&nbsp;i=4,&nbsp;a=0;switch(i){&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;1&nbsp;:&nbsp;a++;&nbsp;break;&nbsp;&nbsp;//&nbsp;如果i=1,执行case&nbsp;1&nbsp;后面的语句,执行完后退出switch&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;2&nbsp;:&nbsp;a+=2;&nbsp;break;&nbsp;//&nbsp;如果i=2,执行case&nbsp;2&nbsp;后面的语句,执行完后退出switch&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;4&nbsp;:&nbsp;a+=4;&nbsp;break;&nbsp;//&nbsp;如果i=4,执行case&nbsp;4&nbsp;后面的语句,执行完后退出switch&nbsp;&nbsp;&nbsp;&nbsp;default&nbsp;:&nbsp;a=0;&nbsp;&nbsp;//&nbsp;如果i不等于上面所以case中的值,执行default后面的语句,执行完后退出switch}

天涯尽头无女友

在c语言和c++ 中 break 语句表示跳出循环,do while for 循环,即 如果有break 语句,执行到它是,循环会终止,继续执行循环外下面的语句,且 break 是跳出最内层的循环,比如for(int i=0 ;i<9;i++){x=0;for (int j=0 ;j<9;j++){if (j==4)break;}x++;printf(”%d",x);}当j==4是break,跳出内层循环,继续执行x++ ...希望能帮到你。

慕婉清6462132

if (a%i==0)x=1;break;这样的语句等价于if (a%i==0) {x=1;} break;可见break语句在第一次循环的时候就会执行。改为if (a%i==0) {x=1; break; }就好了。这是你想要的意思。
随时随地看视频慕课网APP
我要回答