C语言关于“百钱百鸡”的问题

作者&投稿:葛饰 (若有异议请与网页底部的电邮联系)
C语言:百钱百鸡问题~

#include
void main(){
int cockNum; //定义公鸡的数量,也就是鸡翁的数量
int henNum; //定义母鸡的数量,也就是鸡母的数量
int chickenNum; //定义小鸡的数量,也就是雏鸡的数量
int count = 0; //定义输出结果的编号
//公鸡100文钱能买100 / 5 = 20只
for (cockNum = 0; cockNum <= 20; cockNum++) {
//母鸡100文钱 能买100 / 3 = 33只,还多1文
for (henNum = 0; henNum <= 33; henNum++) {
//三种鸡的只数总和是100只,故只要确定公鸡和母鸡的只数,就能确定小鸡的只数
chickenNum = 100 - cockNum - henNum;
//三种鸡的总价格是100文,故以此为条件分别输出所有鸡的只数
if (5 * cockNum + 3 * henNum + chickenNum / 3.0 == 100) {
count++; //输出结果的编号自增
printf("%d.公鸡的数量是:%d只,母鸡的数量是:%d只,小鸡的数量是:%d只。
",count,cockNum,henNum,chickenNum);
}
}
}
}

百钱百鸡问题中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?
*题目分析与算法设计设鸡翁、鸡母、鸡雏的个数分别为cocks(x),hens(y),chicks(z),题意给定共100钱要买百鸡,若全买公鸡最多买20只,显然cocks的值在0~20之间;
同理,hens的取值范围在0~33之间,可得到下面的不定方程: 5x+3y+z/3=100 x+y+z=100 所以此问题可归结为求这个不定方程的整数解。由程序设计实现不定方程的求解与手工计算不同。在分析确定方程中未知数变化范围的前提下,可通过对未知数可变范围的穷举,验证方程在什么情况下成立,从而得到相应的解。
程序解释
main()

{
int cocks=0,hens,chicks;
while (cocks<=19) //公鸡只数小于19
{hens=0;
while(hens<=33) //母鸡小于33只
{chicks=100-cocks-hens;
if (5.0*cocks+3.0*hens+chicks/3.0==100.0)
printf("%d %d %d
",cocks,hens,chicks);
hens++;
}
cocks++;
}
}

*总是的进一步讨论这类求解不定方程总理的实现,各层循环的控制变量直接与方程未知数有关,且采用对未知数的取值范上穷举和组合的方法来复盖可能得到的全部各组解。能否根据题意更合理的设置循环控制条件来减少这种穷举和组合的次数,提高程序的执行效率,请读者考虑

int all = 100;
            int cock = 0;
            int hen = 0;
            int chk = 0;
            for ( cock = 1; cock <= 100;cock++ )
            {
                for (hen = 1; hen <= 100; hen++)
                {
                    for (chk = 1; chk <= 100; chk++)
                    {
                        if ((cock + hen + chk == 100) && ((cock * 5 + hen * 3 + chk / 3 == 100))&&( chk % 3 ==0))
                        {
                            Console.WriteLine("公鸡{0},母鸡{1},小鸡{2}", cock, hen, chk);
                        }
                    } 
                }
            }
            }

C#编写的 思路是一样的  小鸡除3 可能不一定是3的整数倍 而且又能符合总和是100的哦 加上一个判断 小鸡的数量是3的整数倍才可以



for(cock=0;cock<=20;cock++);
for(hen=0;hen<=33;hen++);
for(chicken=0;chicken<=100;chicken++);
if(5*cock+3*hen+chicken/3==100);

后面的分号导致这个if语句和所有的for循环语句都是空语句


而且在最内层的for循环内,你是使用chicken作为循环标尺的,但是你每次进去就首先给chicken赋值。这导致了这个循环是错误的。

最内层的for循环内应该写成

for(chicken=0;chicken<=100;chicken++);
{
//chicken=100-cock-hen;
if( 5*cock+3*hen+chicken/3==100  && cock+hen+chicken == 100 );
    printf("cock=%2d,hen=%2d,chicken=%2d
",cock,hen,chicken);
}

 由于你直接chicken/3,结果是取整的,有可能导致不正确。所以,要么增加判断条件chicken可以被3整除,要么最内层的for循环里写成

for(chicken=0;chicken<=100; chicken+=3 )



【C语言】【多重循环】【百钱白鸡问题】
{ int a,b,c; \/\/a,b,c各代表公鸡、母鸡和小鸡的数量 for ( a=0;a<=100\/5;a++ ) \/\/公鸡每只钱5,取5,100钱取100 \/\/100钱最多买100\/5只最少0只 for ( b=0;b<=100\/3;b++ ) \/\/母鸡3相当于钱三 for ( c=0;c<=100;c++ ) \/\/小鸡最多买300只,但只买百鸡最多取...

C语言 百钱买百鸡
include<stdio.h> int main(){ int a,b,c;for(a=0;a<20;a++) \/\/公鸡可能的只数 for(b=0;b<(100-5*a)\/3;b++) \/\/母鸡可能的只数 { c=100-a-b; \/\/总数为100时,小鸡的只数 if(c%3==0 && a*5+b*3+c\/3==100) \/\/若小鸡只数是3的倍数,且总价为100...

百鸡百钱问题 c语言 递归解决 一定是递归!不要用循环!
为方便计算,把小鸡的价格定义为1,母鸡价格为9,公鸡15,这样可以把问题当作300钱买100鸡了:include <stdio.h>int price[3] = { 15, 9, 1 };int chicknum[3];void buychick(int curmoney, int ci) {int max, i;max = curmoney \/ price[ci];for (i = 1; i <= max; ++i){...

c语言百钱买百鸡问题的流程图
include <stdio.h> void main(){ int mj,gj,xj,n=0;printf(" 百元买百鸡问题求解方案\\n") ;printf(" ---\\n") ;printf("\\t母鸡\\t公鸡\\t小鸡\\n") ;for(mj=0;mj<=100;mj++)for(gj=0;gj<=100;gj++){ xj=100-mj-gj;if(xj*0.5+mj*3+gj*2==100){ n++;printf("方案%...

C语言程序百钱买百鸡,公鸡5块钱一只,母鸡三块.小鸡一块3只,程序怎么写...
include<stdio.h> define N 100 int main(){ int i,j,k,t=0;for(i=1;i*5<=N;i++)for(j=1;j*3<=N;j++)for(k=1;k*3<=N;k++)if(5*i+j*3+k*3==N){printf("i=%3d,j=%3d,k=%3d\\n",i,j,k);t++;} printf("共有%d种不同法\\n",t);return 0;} ...

c语言百鸡问题
\/ 百钱买百鸡问题 问题:公元钱五世纪,我国古代数学家张丘建在《算经》一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?\/ include "stdio.h"include "conio.h"int main(){ int male;int female;int baby;for(male=0;male...

百元买百鸡,公鸡5元,母鸡3元,小鸡2只1元.c语言编程,求解,给跪了_百度...
思路:三个循环,将每种情况都按最大化考虑;判断条件是:既要求所有钱为100元并且所有数也是100个。include <stdio.h> main(){ int x,y,z;for(x=0;x<=20;x++)for(y=0;y<=33;y++)for(z=0;z<=200;z++)if((x*5+y*3+(int)(z*0.5)==100)&&(x+y+z==100))printf("x=...

一道关于百钱买百鸡的问题,求解答。
分析与解 因为100元钱,买100只鸡,所以平均1元钱买1只鸡。每小组4只鸡:其中1只母鸡和3只小鸡,共值4元钱。(因为1只母鸡3元钱,3只小鸡1元钱),恰好是平均1元钱买1只鸡。每大组7只鸡:其中1只公鸡和6只小鸡。共值7元钱。(因为1只公鸡5元钱,3只小鸡1元钱,6只小鸡2元钱),恰好...

谁能告诉我计算机编程中什么是百钱百鸡?谢谢!
刚刚学过的C语言,老师教导了这个程序:我国古代数学书《张邱建算经》中有一个著名的“百鸡百钱”问题。大意是:公鸡1只值钱5,母鸡1只值钱3,小鸡3只值钱1。今有钱100,买鸡100只。问公鸡、母鸡、小鸡各买几只?试编程求解所有可能的组合。参考程序:main(){ int cock,hen,chicken,count=0;...

用C语言,跟C++编百钱买百鸡的详细程序
include<stdio.h> int main() { int x,y,z,j=0; printf("Following are possible plans to buy 100 fowls with 100 Yuan.\\n"); for(x=0;x<=20;x++) \/*外层循环控制鸡翁数*\/ for(y=0;y<=33;y++) \/*内层循环控制鸡母数y在0~33变化*\/ { z=100-x-y; \/*内外层循环控制下...

奉贤区18242604301: 百鸡问题怎么用C语言求解 -
景志水杨: 百钱买百鸡问题——一百个铜钱买了一百只鸡,其中公鸡一只5钱、母鸡一只3钱,小鸡一钱3只,问一百只鸡中公鸡、母鸡、小鸡各多少). 这是一个古典数学问题,设一百只鸡中公鸡、母鸡、小鸡分别为x,y,z,问题化为三元一次方程组: 这里...

奉贤区18242604301: C程序设计:百钱百鸡问题 -
景志水杨: #include <stdio.h> main() {int i, j, k;for (i=0; i<=33; ++i)for (j=0; j<=50; ++j)for (k=0; k<=100; ++k){if ((100 == 3*i+2*j+1*k)&&(100 == i+j+k))printf("公鸡%d只,母鸡%d只,小鸡%d只\n", i, j, k);} }看题目就知道,肯定是100元买100只小鸡啊...

奉贤区18242604301: 急!!!c语言编程 百钱买百鸡问题等~ -
景志水杨: 说下程序的方法,具体编就很简单了.1.循环语句.先设定分别是a b c三只.外循环a=1开始步进,内循环b也从1步进,算出c的值,判断c的值是否是整数,如果不是则b=2,,,如此下去直到b=(100-5a-1/3c)为止.如果都没满足 内循环结束.a=2,然后如此下去.一旦c是整数,则退出循环,输出a b c的值即可. 2.定义2个数组,第一个数组赋值1-17.第二个空数组.然后定义的循环语句从1到7如此循环并同时如果到7,第一个数组此时的值付个第二个数组.也要用到内外循环.

奉贤区18242604301: C语言!百钱买百鸡 -
景志水杨: ********************* 算法以及书写上,似乎都有点小问题 ********************* 如果“大公鸡5文钱一只,大母鸡3文钱一只,小鸡一文钱买三只”,且 a,b,c分别表示大公鸡,大母鸡,小鸡,那么...... if(5.0*a+3.0*b+c/3.0=100.0) 对于这一句,是有问题...

奉贤区18242604301: c语言 while if语句作业描述:百鸡问题:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一.百元买百鸡,问鸡翁、母、雏各几只”. -
景志水杨:[答案] 用穷尽法计算结果 #include void main() { int i,j,k; //用i,j,k分别表示公鸡、母鸡和小鸡的个数 for ( i=0;i for ( j=0;j for ( k=0;k if ( i*5+j*3+k/3==100 ) //排列中如果凑成100元则输出结果 printf("鸡翁%d,鸡母%d,鸡雏%d\n",i,j,k); }

奉贤区18242604301: 百钱百鸡问题. 编写c语言程序,求解百钱百鸡问题(最好两种方法,比如for - 种,while - 种)? -
景志水杨: #include<stdio.h> int main() { int i,j,k;printf("Cock\tHen\tChicken\n");for(i=0; i<20; i++)for(j=0; j<(100-5*i)/3; j++){ k=100-i-j;if(k%3==0&&5*i+3*j+k/3==100)printf("%d\t%d\t%d\n",i,j,k);}return 0; } ===================#include<stdio.h...

奉贤区18242604301: 什么是c语言的百鸡问题?? -
景志水杨: /********************************************************************************百钱买百鸡问题*问题:公元钱五世纪,我国古代数学家张丘建在《算经》一书中提出了“百鸡问题”:* 鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一.* 百钱买百鸡,问鸡翁...

奉贤区18242604301: 百鸡问题 c语言 -
景志水杨: #include#include int main() { int x,y,z; printf("百鸡问题解:\n"); for(x=0;x

奉贤区18242604301: c语言的百钱买百鸡问题.
景志水杨: //不知道你的数组干什么用的 #include "stdio.h" struct node { int x; //公鸡 int y; //母鸡 int z; //小鸡 }; int main() { struct node data; for(data.x=1;data.x&lt;=20;data.x++) { for(data.y=1;data.y&lt;=33;data.y++) { for(data.z=3;data.z&lt;=99;data.z+=3)...

奉贤区18242604301: 用c语言程序求解百钱买百鸡问题(需调用函数) -
景志水杨: int main() { int cocks=0,hens,chicks; while(cocks

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网