编程题:一只大鸡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;
}

㈡ 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);