C语言百钱百鸡问题代码及解析

栏目: C · 发布时间: 7年前

内容简介:中国古代数学家张丘健在他的《算经》中提出了一个著名的“百钱白鸡问题”:一只公鸡值五钱,一只母鸡值三钱,三只小鸡值一钱,现在要用百钱买百鸡,请问公鸡、母鸡、小鸡各多少只?如果用百钱只买公鸡,最多可以买20只,但题目要求买一百只,所以公鸡数量在0~20之间。同理,母鸡数量在0~33之间。在此把公鸡、母鸡和小鸡的数量分别设为cock、hen、chicken,则 cock+hen+chicken=100,因此百钱买百鸡问题就转换成解不定方程组的问题了:

问题描述

中国古代数学家张丘健在他的《算经》中提出了一个著名的“百钱白鸡问题”:一只公鸡值五钱,一只母鸡值三钱,三只小鸡值一钱,现在要用百钱买百鸡,请问公鸡、母鸡、小鸡各多少只?

问题分析

如果用百钱只买公鸡,最多可以买20只,但题目要求买一百只,所以公鸡数量在0~20之间。同理,母鸡数量在0~33之间。在此把公鸡、母鸡和小鸡的数量分别设为cock、hen、chicken,则 cock+hen+chicken=100,因此百钱买百鸡问题就转换成解不定方程组的问题了:

C语言百钱百鸡问题代码及解析

算法设计

对于不定方程组,我们可以利用穷举循环的方法来解决,也就是通过对未知数可变范围的穷举验证方程在什么情况下成立,从而得到相应的解。公鸡范围是0~20,可用语句for(cock=0; cock<=20; cock++)实现。钱的数量是固定的,要买的鸡的数量也是固定的,母鸡数量是受到公鸡数量限制的,同理,小鸡数量受到公鸡和母鸡数量的限制,因此可以利用三层循环的嵌套来解决:第一层循环控制公鸡数量,第二层控制母鸡数量,最里层控制小鸡数量。即:

for(cock=0; cock<=20; cock++)  //外层循环控制公鸡数量范围

for(hen=0; hen<=33; hen++)  //内层循环控制母鸡数量范围

for(chicken=0; chicken<=100; chicken++)  //内层循环控制小鸡数量范围

{

//条件控制

printf(“cock=%2d, hen=%2d, chicken=%2d\n”, cock, hen, chicken);

}

下面是完整的代码:

#include<stdio.h>

int main()

{

int cock, hen, chicken;

for(cock=0; cock<=20; cock++)  //外层循环控制公鸡数量取值范围0~20

for(hen=0; hen<=33; hen++)  //内层循环控制母鸡数量取值范围0~30

for(chicken=0; chicken<=100; chicken++)  //内层循环控制小鸡数量取值范围0~100

{

if( (5*cock+3*hen+chicken/3.0==100) && (cock+hen+chicken==100) )

//在内外层循环条件控制下小鸡数量的取值限制用难一组解的合理性

printf("cock=%2d, en=%2d, chicken=%2d\n", cock, hen, chicken);

}

}

运行结果:

cock= 0, en=25, chicken=75

cock= 4, en=18, chicken=78

cock= 8, en=11, chicken=81

cock=12, en= 4, chicken=84

C语言百钱百鸡问题代码及解析

补充说明:根据这三层循环可得到多种方案,但有些事不符合条件的,因此结果输出之前需要筛选合理方案,控制条件语句为:

if((5*cock+3*hen+chicken/3==100) && (cock+hen+chicken==100))

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址: https://www.linuxidc.com/Linux/2018-12/155756.htm


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

写给大家看的设计书(第4版)

写给大家看的设计书(第4版)

Robin Williams / 苏金国、李盼 / 人民邮电出版社 / 2016-1 / 59.00元

畅销设计入门书最新版,让每个人都能成为设计师 在这个创意无处不在的时代,越来越多的人成为设计师。简历、论文、PPT、个人主页、博客、活动海报、给客人的邮件、名片……,处处都在考验你的设计能力。 美术功课不好?没有艺术细胞?毫无设计经验? 没关系!在设计大师RobinWilliams看来,设计其实很简单。在这部畅销全球多年、影响了一代设计师的经典著作中,RobinWilliams将......一起来看看 《写给大家看的设计书(第4版)》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

随机密码生成器
随机密码生成器

多种字符组合密码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具