鸡兔同笼,上有m个头,下有n只脚,编程求鸡、兔各多少只?(m,n从键盘输入)
说明:输入数据不合理时,输出"error"
思路是啥呀?最后这个说明的跳出是如何实现?
鸡和兔子都是1个头
鸡2只脚,兔子4只脚
假设鸡 x只,兔子y只
x+y=头数
2*x+4*y=脚数
双层for循环遍历就可以了
代码如下:
#include <stdio.h>
int main()
{
int x, y;
int m, n;
int flag = 0;
printf("请输入m和n:");
scanf("%d %d", &m, &n);
for (x = 0; x <= m; x++)
{
for (y = 0; y <= m; y++)
{
if (x + y == m && 2 * x + 4 * y == n)
{
flag = 1;
printf("鸡%d只,兔子%d只\n", x, y);
}
}
}
if (flag == 0)
printf("error");
return 0;
}
这就是一个简单的方程
设鸡有x,兔有y
则 x+y=头总数
2x+4y=脚的总数。有了这个方程式就很好设计算法了
由于鸡有2 只脚,兔子有4 只脚,因此笼子里面脚的总数一定是个偶数。如果有奇数只脚,则输入不正确。即没有满足要求的情况出现,则输出2 个0。
当a是偶数时,若要动物数目最少,则应使动物尽量有4 只脚,而要动物数目最多,则应使动物尽量有2 只脚。因此本题无需用循环穷举,只需按上面的分析找到相应的计算式子即可。
如果总脚数a 是4 的倍数,则动物最少数目为a / 4(全部为兔子),最多为a / 2(全部为鸡)。
如果总脚数a 不是4 的倍数,则动物最少数目为a/4+1(除1只鸡外,其余全部为兔子),最多为a / 2(全部为鸡)。
因此,编写一个简单的选择结构实现相应的判断和计算输出就可以了。
#include <stdio.h>
int main(void)
{
int j, t;
for (j = 0; j <= 98; j++) {
for (t = 0; t <= 98; t++) {
if (j + t == 98 && j * 2 + t * 4 == 386) {
printf("chickens=%d,rabbit=%d", j, t);
break;
}
}
}
return 0;
}
或
#include
int main()
{undefined
int n,i,a;
scanf("%d",&n);
while (n--)
{undefined
scanf("%d",&a);
if (a%2!=0)
printf("0 0\n");
else if (a % 4!=0)
printf("%d %d\n",a/4+1,a/2);
else
printf("%d %d\n",a/4,a/2);
}
return 0;
}
点击一个采纳,十分感谢
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!