有这么一个程序,作用是求一个数字分解成两个质数之和,我的编写是:(此编写是正确的)#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语句
4 回答
慕容森
TA贡献1853条经验 获得超18个赞
C++中break语句主要用在循环语句和switch语句中。
下面举例来说明break的用法:
1、break用在循环语句中(以for循环为例)。如:
int i; for (i=0; i<10; i++) { if (i>3) // 如果i>3,跳出for循环,执行printf语句 break ; } printf ( "%d" , i); |
2、break用在switch语句中。如:
int i=4, a=0; switch (i) { case 1 : a++; break ; // 如果i=1,执行case 1 后面的语句,执行完后退出switch case 2 : a+=2; break ; // 如果i=2,执行case 2 后面的语句,执行完后退出switch case 4 : a+=4; break ; // 如果i=4,执行case 4 后面的语句,执行完后退出switch default : a=0; // 如果i不等于上面所以case中的值,执行default后面的语句,执行完后退出switch } |
天涯尽头无女友
TA贡献1831条经验 获得超9个赞
在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
TA贡献1804条经验 获得超2个赞
if (a%i==0)
x=1;break;
这样的语句等价于
if (a%i==0) {x=1;} break;可见break语句在第一次循环的时候就会执行。
改为if (a%i==0) {x=1; break; }就好了。这是你想要的意思。
- 4 回答
- 0 关注
- 165 浏览
添加回答
举报
0/150
提交
取消