c语言程序设计例题

来源:百度知道 编辑:UC知道 时间:2024/09/28 11:29:30
编制程序解决”百鸡问题”:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一.百钱买百鸡,问鸡翁,鸡母,鸡雏各几何?

#include <stdio.h>

main()
{
int nCock;//公鸡数
int nHen;//母鸡数
int nChick;//小鸡数

for(nCock = 0; nCock <= 100 / 5; nCock++)//公鸡数最多不超过100/5只
{
for(nHen = 0; nHen <= (100 - nCock * 5) / 3; nHen++)//母鸡数最多不超过(100元-公鸡数*5)/3
{
//小鸡数=(100元 - 公鸡数*5 - 母鸡数*3)*3
nChick = (100 - nCock*5 - nHen*3) * 3;

//如果公鸡数+母鸡数+小鸡数正好为100只,则此情况为一解
if(nCock + nHen + nChick == 100)
printf("公鸡%d只,母鸡%d只,小鸡%d只\n", nCock, nHen, nChick);
}
}
}

国际最优算法,只用两层循环就行了,而且不用都循环到100
#include<stdio.h>
void main()
{
int i,j,k;
for(i=0;i<=20;i++)
for(j=0;j<=33;j++)
{
k=100-i-j;
if(k%3==0&&5*i+3*j+k/3==100)
printf("gongji=%d muji=%d xiaoji=%d\n",i,j,k);
}
}

用纯粹的算术眼光来观察这百鸡题,却是一个普通的混合比例题。因为100只鸡值钱一百文,平均每只就值钱一文。所以就它们损益(即亏盈)的数可以求得混合量的比,再用配分法来分配得下表:

上表应这样理解,若每只公鸡、母鸡都作一文卖,亏损4+2=6