#include<iostream>
using namespace std;
int main(){
int x,y;
for(x=0;x<100;x++){
for(y=0;y<50;y++){
while(100-x-y>0){
if(0.5*x+2*y+3*(100-x-y)==100){
cout<<x<<” “<<y<<” “<<100-x-y<<endl;
}
}
}
}
return 0;
}
为什么这样写鸡兔同笼问题程序运行不了呢
using namespace std;
int main(){
int x,y;
for(x=0;x<100;x++){
for(y=0;y<50;y++){
while(100-x-y>0){
if(0.5*x+2*y+3*(100-x-y)==100){
cout<<x<<” “<<y<<” “<<100-x-y<<endl;
}
}
}
}
return 0;
}
为什么这样写鸡兔同笼问题程序运行不了呢
解决方案
60
原因是你用的是while(100-x-y>0)
第一次循环的时候就满足,然后在while循环里既没有修改x,y的值,也没有break所以陷入了死循环
你这个应该用if就行了吧?
第一次循环的时候就满足,然后在while循环里既没有修改x,y的值,也没有break所以陷入了死循环
你这个应该用if就行了吧?
#include<iostream> using namespace std; int main(){ int x, y; for (x = 0; x < 100; x++){ for (y = 0; y<50; y++){ if (100 - x - y>0){ if (0.5*x + 2 * y + 3 * (100 - x - y) == 100){ cout << x << " " << y << " " << 100 - x - y << endl; } } } } return 0; }
10
while(100-x-y>0) ===》 if(100-x-y>0)
10
第一次循环时x==0,y==0满足while循环条件,所以在此处一直循环