解题思路:
审清题干,养成习惯。

百鸡百钱是一个很经典的循环题目了。公鸡(cock)一只5钱,母鸡(hen)一只3钱,小鸡(chicken)三只1钱,目的是求出用一百钱买一百只鸡的所有搭配方法。注意,这里是刚好用完一百钱,刚好买了一百只鸡。

很明显,这道题用循环就可以很简单的求解出来。

我们来分析一下,公鸡一只5钱,那么最多可以买20只公鸡,也就是说公鸡的数量不可能超过20只(当然,不可能达到这么多),这里第一个循环结束的条件就出现了。同样的,母鸡一只3钱,那么母鸡的数量不可能超过33只,第二个循环结束的条件也出现了。当我们用循环得到了公鸡和母鸡的数量时,小鸡的数量也就随之确定了,求小鸡的数量有两种思路。

第一种,控制百鸡验证百钱。求小鸡的数量:chicken=100-cock-hen。验证是否满足条件时需要验证两点,一是小鸡的数量是否是3的倍数(小鸡三只1钱),二是总钱数为一百。即:

chicken%3==0 && cock*5+hen*3+chicken/3==100

第二种,控制百钱验证百鸡。求小鸡的数量:chicken=(100-cock*5-hen*3)*3。验证是否满足条件时也需要验证两点,一是公鸡和母鸡所需的钱数是否超过一百,而是鸡的总数为一百。即:

cock*5+hen*3<=100 && cock+hen+chicken==100

当条件符合时,我们就可以进行输出操作。注意输出格式的要求即可。

注意事项:
(1)理清思路,不要把自己绕晕了;

(2)注意两个循环的结束条件;

(3)注意输出格式的要求。
参考代码:

控制百鸡验证百钱:

# include<stdio.h>

int main()
{
	int cock,hen,chicken;
	for(cock=0;cock<=20;cock++)
		for(hen=0;hen<=33;hen++)
		{
			chicken=100-cock-hen;
			if(chicken%3==0 && chicken/3+cock*5+hen*3==100)
				printf("cock=%d,hen=%d,chicken=%d\n",cock,hen,chicken);
		}

	return 0;
}

控制百钱验证百鸡:

# include<stdio.h>

int main()
{
	int cock,hen,chicken;
	for(cock=0;cock<=20;cock++)
		for(hen=0;hen<=33;hen++)
		{
			chicken=(100-cock*5-hen*3)*3;
			if(cock*5+hen*3<=100 && chicken+cock+hen==100)
				printf("cock=%d,hen=%d,chicken=%d\n",cock,hen,chicken);
		}

	return 0;
}

如有裨益,吾之幸也。祝大家编程进步。

点赞(0)
 

0.0分

19 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 12 条评论

软件二班谭豪 3年前 回复TA
为什么不可以用三重循环然后判断相乘后相加等于100
Brynn 3年前 回复TA
很棒!