C语言经典问题---“百钱买百鸡”问题
大家好!今天我们来介绍C语言中一个著名的问题:百钱买百鸡的问题。
中国古代数学家张丘建在他的《算经》中提出了一个著名的“百钱买百鸡问题”,鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?
其大意就是:公鸡一只五元钱,母鸡一只三元钱,小鸡三个一元钱。问:100元买了100只鸡,其中公鸡、母鸡和小鸡各有多少只?
问题分析:首先我们如果对此问题进行数学求解的话,我们能够看出每一种鸡的数量不是一个定数。根据题意设公鸡、母鸡和雏鸡分别为 x、y 和 z,如果 100 元全买公鸡,那么最多能买 20 只,所以 x 的范围是大于等于 0 且小于等于 20;如果全买母鸡,那么最多能买 33 只,所以 y 的范围是大于等于 0 且小于等于 33;如果 100 元钱全买小鸡,那么最多能买 99 只(根据题意小鸡的数量应小于 100 且是 3 的倍数)。
并且,我们只能从以下几个方面来进行分析:
第一个方面:就是总钱数为100;
第二个方面:就是总鸡数为100
代码如下:
/*
中国古代数学家张丘建在他的《算经》中提出了一个著名的“百钱买百鸡问题”,
鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?
*/
#include<stdio.h>
int main()
{
int x, y, z; /*定义公鸡的数量为x,定义母鸡的数量为y,定义小鸡的数量为z*/
for (x = 0; x <= 20; x++)
for (y = 0; y <= 33; y++)
for (z= 3; z <= 99;z++)
if (5 * x+ 3 * y + z/ 3 == 100)
if (x+ y+ z ==100)
if (z % 3 ==0) /*判断小鸡数是否能被 3 整除*/
printf("公鸡:%d,母鸡:%d,小鸡:%d\n", x, y, z);
return 0;
}
好了,今天的讲述就到这里了。你明白了吗?