题目:
已知笼子里鸡、兔共有m只,鸡兔共有n只脚,请你用C语言设计程序求鸡、兔各有多少只。
核心思路
假设全都是兔,则有鸡数=(4×鸡兔总数-实际脚数)÷(4-2);
假设全都是鸡,则有兔数=(实际脚数-2×鸡兔总数)÷(4-2);
需要注意:鸡的只数或兔的只数只可能是大于等于0!
源代码如下:
#include <stdio.h>
int main() {
int m, n;
printf("请输入鸡兔共多少只:\n");
scanf("%d", &m);
printf("请输入鸡兔共多少只脚:\n");
scanf("%d", &n);
if ((n - 2 * m) >= 0 && (n - 2 * m) % 2 == 0 && (4 * m - n) >= 0 && (4 * m - n) % 2 == 0) {
printf("鸡有%d只,兔有%d只", (4 * m - n) / 2, (n - 2 * m) / 2);
} else {
printf("您的输入有误!");
}
return 0;
}
编译运行上面的代码:
请输入鸡兔共多少只: 15 请输入鸡兔共多少只脚: 36 鸡有12只,兔有3只
拓展:求解百钱百鸡
题目:
我国古代数学家张丘建在《算经》一书中曾提出过著名的“百钱买百鸡”问题,该问题叙述如下:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?翻译后的意思是公鸡一个五块钱,母鸡一个三块钱,小鸡三个一块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?请你用C语言设计程序求公鸡、母鸡、小鸡各多少只。
核心思路
设公鸡 x 只,母鸡 y 只,小鸡 z 只,得到以下方程式组:
5x + 3y + 1 / 3z = 100
x + y + z = 100
0 <= x <= 100
0 <= y <= 100
0 <= z <= 100
源代码如下:
#include <stdio.h>
int main() {
int i, j, k;
for (i = 0; i <= 100; i++) {
for (j = 0; j <= 100; j++) {
for (k = 0; k <= 100; k++) {
if (5 * i + 3 * j + k / 3 == 100 && k % 3 == 0 && i + j + k == 100) {
printf("公鸡 %2d 只,母鸡 %2d 只,小鸡 %2d 只\n", i, j, k);
}
}
}
}
return 0;
}
编译运行上面的代码,将会输出以下结果:
公鸡 0 只,母鸡 25 只,小鸡 75 只 公鸡 4 只,母鸡 18 只,小鸡 78 只 公鸡 8 只,母鸡 11 只,小鸡 81 只 公鸡 12 只,母鸡 4 只,小鸡 84 只