问题描述:中国古代数学家张丘建在他的《算经》中提出了一个著名的“百钱白鸡问题”:一只公鸡值五钱,一只母鸡值三钱,三只小鸡值一钱,现在要用百钱买百鸡,请问公鸡、母鸡、小鸡各多少只?
问题分析:我们将公鸡、母鸡、小鸡对应的变量分别设为cock、hen、chicken,则有chicken必定为三的倍数。同时满足cock+hen+chicken=100,并且满足5*cock+3*hen+chicken/3=100。本题我们需要用循环结构来进行穷举。需要三重循环,对cock循环,对hen的循环,对chicken的循环。cock的取值范围为0~20,hen的取值范围0~33,chicken的取值范围为0~100(但必须为3的倍数)。
1 #include "stdio.h" 2 #include "conio.h" 3 void main() 4 { 5 int cock,hen,chicken; //变量定义 6 for(cock=0;cock<=20;cock++) //公鸡数目穷举 7 for(hen=0;hen<=33;hen++) //母鸡数目穷举 8 for(chicken=0;chicken<=100;chicken+=3) //小鸡数目穷举 9 { 10 if(cock+hen+chicken==100&&cock*5+hen*3+chicken/3==100) //条件判断 11 printf("cock=%2d,hen=%2d,chicken=%2d\n",cock,hen,chicken); //输出 12 } 13 getch(); 14 }
我们还可以利用两重循环来实现,对于其中的一个变量我们可以采取用另外两个变量进行表示。如下代码:
#include "stdio.h" #include "conio.h" void main() { int cock,hen,chicken; //变量定义 for(cock=0;cock<=20;cock++) //公鸡数目穷举 for(chicken=0;chicken<=100;chicken+=3) //小鸡数目穷举 { hen=100-cock-chicken; //母鸡数量 if(cock+hen+chicken==100&&cock*5+hen*3+chicken/3==100&&hen>=0&&hen<=33) //条件判断 printf("cock=%2d,hen=%2d,chicken=%2d\n",cock,hen,chicken); //输出 } getch(); }
运行结果:
cock= 0,hen=25,chicken=75
cock= 4,hen=18,chicken=78
cock= 8,hen=11,chicken=81
cock=12,hen= 4,chicken=84
时间: 2024-10-07 17:21:04