c++小题错误分析

来源:百度知道 编辑:UC知道 时间:2024/06/24 15:00:37
马克思的手稿中有一道趣味数学问题:有30个人,其中有男人、女人和小孩,在一家饭馆吃饭花了50先令,每个男人花3先令,每个女人花2先令,每个小孩花1先令,问男人、女人和小孩各有几人?
#include<iostream>
using namespace std;
int main()
{
int man, woman,child;
for(man=1;man<=30;man++)
for(woman=1;woman<=30;woman++)
{
for(child=30-man-woman;child<=30;child++)
if(child+man*3+woman*2==50&&child>=1)
cout<<"man="<<man<<" "<<"woman="<<woman<<" "<<"child="<<child<<endl;
}
return 0;
}
请详细解释错误的原因

int main()
{
int man, woman, child;
for (man = 1; man <= 30; man++)
for (woman = 1; woman <= 30 - man; woman++)
{
child = 30 - man - woman;
if (child + man * 3 + woman * 2 == 50 && child >= 1)
printf("man=%d, woman=%d, child=%d\n", man, woman, child);
}

return 0;
}

错误很明显了

#include<iostream>
using namespace std;
int main()
{
int man, woman,child;
for(man=1;man<=30;man++)
for(woman=1;woman<=30;woman++)
{
for(child=1;child<=30;child++)
if(child+man*3+woman*2==50&&child>=1&&child+man+woman==30)
cout<<"man="<<man<<" "<<"woman="<<woman<<" "<<"child="<<child<<endl;
}
return 0;
}

for(child=30-man-woman;child<=30;child++)
你在开玩笑吧?如果child=30-man-woman那么一开始小孩的