女子增肥:数学"百鸡问题" 的 c++ 代码

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/25 15:25:01

我国古代数学家张丘建在《算经》一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

//GetChick: 得到鸡翁、鸡母、鸡雏的数量
//输入参数: cocks:鸡翁
// hens: 鸡母
// chicks: 鸡雏
void GetChick(int* cocks,int* hens, int* chicks)
{
*cocks=0;
while(*cocks<=19)
{
*hens=0;
while(*hens<=33)
{
*chicks=100-*cocks-*hens
if(5* (*cocks)+3* (*hens)+(*chicks)/3==100&& (*chicks)%3==0){
*hens= *hens+1;
}
*cocks=*cocks+1;
}

}

我来一个C的
main()
{int cocks,hens,chicks;
for(cocks=1;cocks<=19;cocks++)
{for(hens=1;hens<33;hens++)
{
chicks=100-(cocks+hens);
if(5*cocks+3*hens+chicks/3==100&&(chicks%3==0)
printf("cocks=%d,hens=%d,chicks=%d\n",cocks,hens,chicks);
}
}

#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

main()
{
int jg,jm,jc; //变量: jg 鸡公, jm 鸡母, jc 鸡雏

for(jg = 0; jg <=19; jg++) //因为最多也就100钱所以鸡公最多也就20只但是20铁定不行所以循环终结为19
{ //开始为0表示我有不买公鸡的权利
for(jm = 0; jm <= 33; jm++) //同理鸡母最多也只能买33只
{
if((jg * 5) + (jm * 3) < 100) //如果公鸡母鸡的加起来超过了100钱肯定不符合标准
//所以只有当公鸡母鸡加起来小于100钱的时候才可以考虑
{
jc = 100 - jg - jm; //这行规定三种鸡的总数是100只,算出鸡雏
if((jg*5 + jm*3 + jc/3) == 100) //如果三种鸡的总价格等于100则符合标准
{
printf("鸡公:%d 鸡母: %d 鸡雏: %d\n", jg, jm, jc); //输出三种鸡的数量
}
}
}
}
getch(); //等待一个字符,这行是为了有时间看清输出可以不要
}

答案:
鸡公:0 鸡母: 25 鸡雏: 75
鸡公:3 鸡母: 20 鸡雏: 77
鸡公:4 鸡母: 18 鸡雏: 78
鸡公:7 鸡母: 13 鸡雏: 80
鸡公:8 鸡母: 11 鸡雏: 81
鸡公:11 鸡母: 6 鸡雏: 83
鸡公:12 鸡母: 4 鸡雏: 84