百钱白鸡问题

C++语言 码拜 9年前 (2016-04-05) 1040次浏览
#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;
}
为什么这样写鸡兔同笼问题程序运行不了呢
解决方案

60

原因是你用的是while(100-x-y>0)
第一次循环的时候就满足,然后在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循环条件,所以在此处一直循环

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明百钱白鸡问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)