百钱买百鸡c语言编程题

合集下载

百元买鸡问题 穷举法 c++

百元买鸡问题   穷举法  c++

穷举法“穷举法”也称“枚举法”,即将可能出现的各种情况一一测试,判断是否满足条件,采用循环语句可方便实现。

百元买鸡问题。

假定小鸡每只5角,公鸡每只2元,母鸡每只5元。

现在有100块钱,要求买100只鸡,编程列出所有可能的购鸡方案。

分析:设母鸡、公鸡、小鸡分别为x、y、z只,根据题目要求列出方程为:其中包括3个未知数,2个方程,此题有若干个解。

可用如下两种方法实现。

方法一:用三重循环来解决。

#include”iostream.h”#include”iomanip.h”void main(){Int x,y,z;Long k(0);Cout <<”x y z”<<endl;For(x=0;x<100;x++)For(y=0;y<100;y++)For(z=0;z<100;z++){K++;If(((3*x+2*y+0.5z)==100)&&((x+y+z==100)))Cout<<setw(9)<<x<<setw(9)<<y<<setw(9)<<z<<endl;}Cout<<”方法一内执行了”<<k<<”次”<<endl;}方法二:用两重循环来解决,相应程序段如下:Cout <<”x y z”<<endl;For(x=0;x<=33;x++)For(y=0;y<=50;y++){K++;z=100-x-y;if((3*x+2*y+0.5z)==100)cout<<setw(9)<<x<<setw(9)<<y<<setw(9)<<z<<endl;}Cout<<”方法二内循环执行了”<<k<<”次”<<endl;方法一利用三重循环表示三种鸡的只数,考虑了所有购鸡的情况,故共执行了1000000次循环;方法二进行了循环的优化,根据三种鸡共100只的关系,用二重循环实现;同时没种鸡的循环次数不必到100,因为还要满足价格100元得问题,故共执行了1734次循环。

c++百钱买百鸡的知识点

c++百钱买百鸡的知识点

c++百钱买百鸡的知识点
C++百钱买百鸡是一个经典的数学问题,它涉及到数学运算、循环控制和条件判断等知识点。

下面我将从多个角度来解释这个问题的相关知识点。

1. 数学运算:
在这个问题中,我们需要解决一个方程组。

假设公鸡的数量为x只,母鸡的数量为y只,小鸡的数量为z只。

根据题意,我们有以下方程:
x + y + z = 100 (总鸡的数量等于100)。

5x + 3y + z/3 = 100 (总价钱等于100)。

在程序中,我们需要利用数学运算的知识,通过解方程组求解x、y和z的值。

2. 循环控制:
为了遍历所有可能的解,我们可以使用循环控制结构。

在这
个问题中,我们可以使用嵌套循环来遍历所有可能的公鸡数量x和
母鸡数量y的组合。

通过循环控制,我们可以找到满足条件的解。

3. 条件判断:
在这个问题中,我们需要根据题目给出的条件进行判断。


据题意,公鸡的价格是5元,母鸡的价格是3元,小鸡的价格是
1/3元。

我们需要通过条件判断来筛选出满足总价等于100的解。

4. 程序设计思路:
在C++中,我们可以使用循环和条件判断来解决这个问题。

一种常见的解决思路是使用嵌套循环,外层循环控制公鸡的数量x,内层循环控制母鸡的数量y。

在每次循环中,我们通过条件判断来
筛选出满足总价等于100的解,并输出结果。

总结起来,C++百钱买百鸡问题涉及到数学运算、循环控制和条
件判断等知识点。

通过运用这些知识点,我们可以编写程序来解决
这个问题。

希望以上解释能够满足你的要求。

大学计算机思维课题3-4.编程解决百钱买百鸡

大学计算机思维课题3-4.编程解决百钱买百鸡

自动换零钱程序
• 人民币面值:100、50、20、10、5、(2)、1 • 提出问题:100元换成零钱有几种换法?
解决问题
• 设50元a张,20元b张,10元c张,5元d张,(2元)e张,1元f张 • 列方程:50a + 20b + 10c + 5d + 2e + f = 100 • 设置循环程序解该不定方程
鸡翁一值钱五,鸡母一值 钱三,鸡雏三值钱一。百 钱买百鸡,问鸡翁、鸡母、 鸡雏各几何?
解决问题
• 设cock为i只,hen为j只,chicken为k只 • 列方程:i + j +k = 100
5i + 3j + (1/3)k = 100
显然,方程无唯一解,此方程为不定方程
如何解不定方程?
逐个尝试求解 在程序中设置循环
思考???
此程序还有什么地方需要修改?全部改为9谢谢
thanks for watching
此处省略几百行
自动换零钱程序
• 优化问题: 100元换成零钱,且最多换8 张零钱,有几种换法?
解决问题
• 设50元a张,20元b张,10元c张,5元d张,(2元)e张,1元f张 • 列方程:50a + 20b + 10c + 5d + 2e + f = 100
a+b+c+d+e+f≤8 • 设置循环程序解不定方程与不等式

c语言穷举法傻瓜教程

c语言穷举法傻瓜教程

穷举法1.密码箱问题#include<stdio.h>main(){int i,key;printf("请设定旅行箱的密码(000-999):"); scanf("%d",&key);printf("\n你的旅行箱密码是:");for(i=0;i<=999;i++)if(i==key)if(i<10)printf("%d\n",i);else if(i<100)printf("%d\n",i);else printf("%d\n",i);}2.百钱买百鸡问题#include<stdio.h>main(){int i , j , k;/*准备输出格式*/printf("\t公鸡\t母鸡\t小鸡\n");for(i=0;i<=20;i++)for(j=0;j<=33;j++){k=100-i-j;if(k%3==0 && i*5+j*3+k/3==100) printf("\t%d\t%d\t%d\n",i ,j ,k); }}例 2 :36 块砖,36 人搬。

男搬 4 ,女搬 3 ,两个小儿抬一砖。

要求一次全搬完。

问需男、女、小儿各若干(必须都有)?请同学们先分析第一步:问题所涉及的情况;analysis:都男的搬,需9人;都女的搬,需12人,都小孩搬,需72人;小孩书需要是2的整数倍;解:#include<stdio.h>main(){int i,j,k;for(i=0;i<=9;i++)for(j=0;j<=12;j++){k=36-i-j;//消去参数需放在最后一个for循环里面if(k%2==0&&i*4+j*3+k*0.5==36)printf("%d\t%d\t%d\n",i,j,k);}作业:换零钞问题:一张100元,换成20,10,5,1面值的零钞,每种至少一张,共有哪些换法,总计多少种换法?都换20:5张;----i都换10:10张;----j都换5:20张;----k都换1:100张----tt=100-i-j-k;解:#include<stdio.h>main()int i,j,k,t;for(i=1;i<=5;i++)for(j=1;j<=10;j++)for(k=1;k<=20;k++){t=100-i*20-j*10-k*5;if(i*20+j*10+k*5+t==100&&t>0)printf("%d\t%d\t%d\t%d\n",i,j,k,t);}}2.从1到100的自然数中,每次取出两个数,要使它们的和大于100,共有哪些取法,总计多少种取法?#include<stdio.h>main(){static int count=0;int i,j;for(i=1;i<=100;i++)for(j=1;j<=100;j++){if((i+j)>100&&j!=i){count++;printf("i=%d\tj=%d\n",i,j);}}printf("循环次数为%d\n",count);}。

“百钱买百鸡”问题的C语言算法分析

“百钱买百鸡”问题的C语言算法分析

“百钱买百鸡”问题的C语言算法分析Abstract:As a process-oriented programming language,C programming language is one of the most classic and popular computer programming languages with the characteristics of the assembly language and the high-level language.It is not only the first choice for the people who begin to learn computer programming,but also the basis for other computer courses and software development.As a difficult point in C Programming Language learning,the loop statement can be used to solve many practical problems of regularly repetitive operation.Taking the case of "spending 100 dollars on 100 chickens",the paper implements design,analysis and optimization,and finally proposes the optimal algorithm.Keywords:C programming language;loop statement;spending 100 dollars on 100 chickens1 引言(Introduction)计算机算法设计是计算机专业学习的核心专业内容,算法设计对于培养一个人的逻辑思维能力具有重要的作用,能进行有效的算法设计是对一个计算机学者的基本要求。

C语言穷举法经典例题ppt课件

C语言穷举法经典例题ppt课件
#39;);
cond=sa+sb+sc+sd;
if (cond==3) printf("做好事的人是:%c\n", thisman);
}
}
第3章 程序控制结构
利用穷举法求解趣味智力题
(韩信点兵) 韩信有一队兵,他想知道有多少人,便让士兵排队报 数。按从1至5报数,最末一个士兵报的数为1;按从1 至6报数,最末一个士兵报的数为5;按从1至7报数, 最末一个士兵报的数为4;最后再按从1至11报数,最 末一个士兵报的数为10。你知道韩信至少有多少兵吗?
比如,先假定是A同学,让 thisman='A';
代入到四句话中
A说:thisman!=‘A’; ‘A’!=‘A’
假,值为0。
B说:thisman==‘C’; ‘A’==‘C’
假,值为0。
C说:thisman==‘D’; ‘A’==‘D’
假,值为0。
D说:thisman!=‘D’; ‘A’!=‘D’
第3章 程序控制结构
优化
void main() {
int x,y,z; for (x=0;x<=100;x++)
取x<=20,y<=33 只进行 21×34= 714 次运算(第 1种运算的6.9e-4)
for (y=0;y<=100;y++)
{
z=100-x-y;
if (z%3==0 && 5*x+3*y+z/3==100 )
真,值为1。
显然,不是'A'做的好事(四个关系表达式值的和为1)
第3章 程序控制结构
再试B同学,让thisman=‘B’;

c++、python、vb求解百钱百鸡问题

c++、python、vb求解百钱百鸡问题

我国古代数学家张丘建在《算经》一书中曾提出过著名的“百钱买百鸡”问题,该问题叙述如下:鸡翁一,值钱三;鸡母一,值钱二;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?翻译过来,意思是公鸡一个三块钱,母鸡一个二块钱,小鸡三个一块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?题目分析如果用数学的方法解决百钱买百鸡问题,可将该问题抽象成方程式组。

设公鸡x 只,母鸡y 只,小鸡z 只,得到以下方程式组:A:3x+2y+1/3z = 100B:x+y+z = 100C:0 <= x <= 100D:0 <= y <= 100E:0 <= z <= 100如果用解方程的方式解这道题需要进行多次猜解,因此我们用穷举法的方式来解题。

1.C++语言#include<iostream>using namespace std;int main(){int i,j,k,x,y,z;for (i=0;i<=33;i++)for(j=0;j<=50;j++)for(k=0;k<=100;k++)if((3*i+2*j+k/3==100)&&(i+j+k==100)&&k%3==0)cout<<i<<" "<<j<<" "<<k<<endl;return 0;}2.Python语言for i in range(33):for j in range(50):for k in range(100):if (3*i+2*j+k/3==100) and (i+j+k==100) and (k%3==0):print(i,j,k)3.VB语言Dim a As Integer, b As Integer, c As IntegerFor a = 0 To 33For b = 0 To 50For c = 0 To 100If 3 * a + 2 * b + 1 / 3 * c = 100 And a + b + c = 100 ThenPrint "公鸡" & a, "母鸡" & b, "小鸡" & cEnd IfNext cNext bNext a。

C语言程序设计模拟试题1(附答案)

C语言程序设计模拟试题1(附答案)

《C语言程序设计》模拟试卷一一、单项选择题(每题2分,共30分)1、下列有关C语言的叙述中错误的是(D)。

A) C语句必须以分号结束B) 任何一个C程序中有且只有一个主函数C) 复合语句在语法上可被看作一条语句D) C程序中对数据的任何操作都可由运算符实现2、以下不能定义为用户标识符的是(C)。

A) MAIN B) _HJ C)2ong D) LINE13、下列符号中用来表示C语言中的回车换行的是(B)。

A) \r B) \n C)\b D) \t4、如有如下定义:int a=1,则语句printf(“%d,%d”, a, ++a);的运行结果为(B)。

A) 1, 1 B) 1, 2 C) 2, 2 D)2, 15、已知ch为字符型变量,下面表达式中正确的是(A)。

A) ch=’\xff ’B) ch=’\ff ’C) ch=’ ff ’D) ch=” ff ”6、以下能正确定义一维数组的是(C)。

A) int a[5]={0,1,2,3,4,5}; B) int a[5]=”012345”;C) char a[ ]=”012345”;D) char a[5]={0,1,2,3,4,5};7、以下语句中能正确定义变量并赋初值的是(A)。

A) char c=65; B) float f=f+1.1;C) double x=12.3e3.6; D) int m=n=2.0;8、在执行下列程序时输入:1357924,则程序的运行结果为(D)。

main( ){ int x, y;scanf(“%2d%2d”,&x,&y);printf(“%2d”,x*y); }A) 13 B) 1357 C) 74 D) 7419、执行下列程序段后输出的结果是(C)。

x = 9;while (x > 7){ printf(“*”); x- -; }A) **** B) *** C) ** D) *10、设char str1[10] = “ABCDE”, str2[10] = “xyz”;则执行语句printf(“%d”, strlen(strcpy(str1, str2))); 后的输出结果是(D)A) 9 B) 8 C) 5 D) 311、若用数组名作为函数调用的实参,则传递给形参的是(A)A) 数组的首地址B) 数组第一个元素的值C) 数组中全部元素的值 D) 数组元素的个数12、在C程序中,若未在函数定义时说明函数类型,则函数默认的类型为( A ) A)void B)double C)int D)char13、下面不能正确进行字符串赋值操作的语句是(A)A) char s[5]={"ABCD"};B) char s[5]; s="ABCD";C) char *s;s="ABCDEF"; D) char *s="ABCD";14、设有说明int s[5]={1,3,5,7,9}; int *p=s; 则下列表达式中值为3的是(B )A)++p B)++(*p) C) *(++p) D) *(p+=2)15、下面程序的输出结果是(B)int m=13;int fun( int x, int y){ int m=3;return( x*y-m); }main( ){ int a=7,b=5;printf(“%d\n”, fun(a,b)/m); }A) 1 B) 2 C) 3 D) 10二、判断(每空1分,共10分)1、C语言有三种结构化程序设计方法,分别为顺序结构、选择结构和循环结构。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

"百钱买百鸡"是一个经典的数学问题,故事是这样的:公鸡5钱一只,母鸡3钱一只,小鸡1钱三只,现在要用100钱买100只鸡,问公鸡、母鸡、小鸡各多少只。

下面是一个使用C语言解决这个问题的示例代码:
c
#include <stdio.h>
int main() {
int x, y, z; // x代表公鸡数量,y代表母鸡数量,z代表小鸡数量
for (x = 0; x <= 20; x++) { // 公鸡最多买20只
for (y = 0; y <= 33; y++) { // 母鸡最多买33只
z = 100 - x - y; // 剩余的数量就是小鸡的数量
if (z % 3 == 0 && x * 5 + y * 3 + z / 3 == 100) {
printf("公鸡:%d只,母鸡:%d只,小鸡:%d只\n", x, y, z);
}
}
}
return 0;
}
这段代码使用两个嵌套的for循环来遍历所有可能的公鸡和母鸡的数量组合。

对于每一对组合,它计算出小鸡的数量,然后检查是否满足题目的条件。

如果满足条件,它就打印出这一组解。

相关文档
最新文档