会编程的鸡
1. 百钱买百鸡c语言编程 公鸡5元/只 母鸡3元/只 小鸡1元/3只 求所有满足条件各鸡数目 只用一层
#include<stdio.h>
intmain(intargc,constchar*argv[])
{
intgongji,muji=0,xiaoji=0;
for(gongji=0;gongji<=20;muji++)
{
if(gongji*5+muji*3<=100)
{
printf("公鸡:%d 母鸡:%d 小鸡:%d ",gongji,muji,(100-gongji*5-muji*3)*3);
}
else
{
gongji++;muji=0;
}
}
return0;
}
2. 一道经典的编程问题:公鸡5元一只,母鸡3元一只,小鸡1元三只,现在要用100元买100只鸡.最优解
3. 编程题:一只大鸡3元,三只小鸡1元,如何用100块钱买100只鸡
简单啊。。。
大鸡为x, 小鸡数为3y(说明:这里小鸡的数量一定是3的倍数,因为100元买100只鸡,鸡不可能买小数只。。。所以大鸡的价钱不可能产生小数。在这样的情况下小鸡的价钱也不会产生小数100-3x,这样的话,必须是3的倍数才可以保证)
列出方程得到:
x+3y=100
3x+1*(3y/3)=100 =>3x+y=100;
解之,得到:
x=100-3y
3(100-3y)+y=100
300-8y=100
8y=200 , y=25
x = 25
so, 大鸡25只,小鸡75只
编程可以用计算法,如上方程。
也可以用穷举法:
python
>>> filter(lambda i: i[0]*3+i[1]/3==100 and i[0]+i[1]==100, [[x,y] for x in range(0, 101) for y in range(0, 101)])
[[25, 75]]
so, 大鸡25只,小鸡75只。
可以。。。请稍等。。。
C#版:
using System;
namespace ConsoleApplication1 {
class Program {
static void Main(string[] args) {
for (int i = 0; i <= 100; i++) {
for (int j = 0; j <= 100; j++) {
//i-大鸡 j小鸡
if (i * 3 + j / 3 == 100 & i + j == 100) {
Console.WriteLine("大鸡{0}只,小鸡{1}只", i, j);
}
}
}
Console.ReadKey();
}
}
}
c版:
#include <stdio.h>
int main()
{
int i, j;
for(i=0; i<=100; i++)
for (j=0; j<=100; j++)
if (i+j==100 && 3*i+j/3==100)
printf("大鸡%d只, 小鸡%d只\n", i, j);
return 0;
}
结果都是一样的:大鸡25只,小鸡75只
优化:
反正大小鸡共100只,可以直接根据大鸡数量计算小鸡,这样去掉一层循环:从循环1万次减到100次。
#include <stdio.h>
int main()
{
int i;
for(i=0; i<=100; i++){
int j = 100 - i;
if (3*i+j/3==100)
printf("大鸡%d只, 小鸡%d只\n", i, j);
}
return 0;
}
继续优化:
小鸡的数量一定是3的整数倍,所以可以用小鸡数量来循环,可以使循环数量再减少:
#include <stdio.h>
int main()
{
int j; //小鸡的数量一定是3的整数倍
for(j=0; 3*j<=100; j++){
int i = 100 - 3*j;
if (3*i+j==100)
printf("大鸡%d只, 小鸡%d只\n", i, 3*j);
}
return 0;
}
4. 编程C语言百鸡问题(尽量减少循环变量得计算量)
##include <stdio.h>
void main ()
{
int cock,hen;
for (cock = 0; cock <= 20; cock++)
for (hen =0; hen <= 100/3; hen++)
if (cock * 5 + hen * 3 + (100 - cock - hen) *1 <= 100)
printf("cock:%d, hen:%d, chick:%d\n", cock, hen, 100 - cock - hen);
}
发现你的题目有点问题
怎么买都是全买小鸡,公鸡母鸡数量全为0
5. VF编程:用100元钱买100只鸡,公鸡每只5元,母鸡每只3元,小鸡每只0.3元,问公鸡、母鸡和小鸡各买多少只。
100除以5加3加0.3的和,约等于13只
6. C语言编程,百鸡问题
#include<stdio.h>
#include<stdlib.h>
int main(){
int g,m,x,i=0;
for(g=0;g<=20;g++){
for(m=0;m<=33;m++){
x=100-g-m;
if(x%3==0){
if(5*g+3*m+x/3==100){
i++;
printf("%d: %d,%d,%d ",g,m,x);
}
}
}
}
system("pause");
return 0;
}
7. 编程 c语言100元买100只鸡,公鸡五元钱一只,母鸡三元钱一只,小鸡一元钱三
#include<stdio.h>
intmain()
{
intgj,mj,xj;//公鸡,母鸡,小鸡
for(gj=1;gj<=20;gj++)//公鸡5块钱一只,100块最多买20只
for(mj=1;mj<=33;mj++)//同理
for(xj=1;xj<=300;xj+=3)//一块钱3只,每次增量为3
if((gj+mj+xj==100)&&(gj*5+mj*3+xj/3<=100))//总量为100只鸡,且价格要在100块以内
printf("公鸡%d只,母鸡%d只,小鸡%d只 ",gj,mj,xj);
return0;
}
8. 用while循环做:鸡兔同笼,头有30个,脚有90只,求鸡兔各几只
楼主您好, 我是学Pascal语言的,不大懂C语言,但是编程语言应该是相通的,我给出Pascal语言的一种方法,不知对您是否有用 ——
program chickens _and_rabbits; //程序首部
const
heads=30;
feet=90; {定义常量“头”是30,“脚”是90}
var
chickens,rabbits:integer; //定义变量鸡、兔为整型
begin
chickens:=0; //鸡的只数初始赋值为0
rabbits:=heads-chickens; //兔的只数初始赋值为90-0=90
while 4*rabbits+2*chickens<>feet do //“<>”是“≠”的意思
chickens:=chickens+1; //或者是inc(chickens)
rabbits:=heads-chickens;
write('chickens=',chickens,' ','rabbits=',rabbits); {结束循环然后分别输出鸡兔只数}
end.
9. c语言编程:一只老母鸡一天下一个蛋,蛋一天变小鸡,小鸡一天后变母鸡,一百天后有多少鸡和蛋
计算机模拟这个过程,就是一个递推公式。
int n = 100; // days
int hen = 1 ; //开始1只鸡
int egg = 0; // 0个蛋
int chick = 0 ; // 0只小鸡
for(int i=1;i<n;i++){
int tmp = chick;
chick = egg; // 小鸡由前一次的蛋孵化
egg = hen; //前一次的鸡下蛋
hen += tmp;//以前的鸡 和 小鸡成长的鸡 相加
}
printf("%d,%d,%d",hen,egg,chick);
10. 编程 百元百鸡问题
设公鸡 x 只,母鸡 y只,则小鸡 100-x-y只;
x的取值范围0到100, y取值范围0到100-x, 故二重循环解决
代码为:
deffun():
forxinrange(100):
foryinrange(100-x):
if5*x+3*y+(100-x-y)/3==100:
print("公鸡=%d,母鸡=%d,小鸡=%d"%(x,y,100-x-y))
return
运算结果:
公鸡=0,母鸡=25,小鸡=75
公鸡=4,母鸡=18,小鸡=78
公鸡=8,母鸡=11,小鸡=81
公鸡=12,母鸡=4,小鸡=84