C语言:鸡兔同笼问题

题目描述:
鸡和兔子在被关在一起。鸡有一个头,两条腿;兔子有一个头,四条腿。现已知笼子中头的个数 m,和腿的个数 n (1 < m < n < 1000),求出笼子中鸡和兔子的个数 a, b。

输入描述:
多组输入,每组数据一行,其中包含 2 个正整数 m, n ,分别代表笼中头的个数和腿的个数

输出描述:
对于每组测试数据输出仅一行,其中包含两个整数 a, b ,分别代表鸡的个数和兔子的个数,如果算不出鸡和兔子的个数则令 a = -1,b = -1

样例输入:
1 4

2 4

10 16

样例输出:
0 1

2 0

-1 -1

#include <stdio.h>

void main()

{    int a,b,c,d;

printf("这是一个用于算鸡兔同笼的小程序\n请输入鸡兔的总数"); 

scanf("%d",&a); 

if(a>=0)

{

printf("\n请输入鸡兔脚的总数");

scanf("%d",&b);

if(b%2==1)

printf("脚的数量出现奇数,真奇怪啊!\n");

else if(b<=a*4&&b>=a*2)

{

c=(4*a-b)/2; // 鸡的数目 

d=a-c;  // 兔的数目 

if(c*2+d*4==b)

printf("鸡有%ld只\n兔有%ld只\n",c,d); // c和d反了 

else

printf("这个真难,计算机也没法算!\n");    

}

else

printf("输入鸡兔脚的数量范围不正确,正确的范围是%d--%d!\n",a*2,a*4);    

}

else

printf("数量不能为负!\n");    

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-12-23

题目没有给出输入终止的条件,程序中补充了,当输入的在头或脚的个数出现负数时,停止输入,程序中止。程序如下,已经运行过:

void main()
{
int m,n,a=-1,b=-1;
while(scanf("%d%d", &m, &n),m>0&&n>0)
{
if(n%2==0)
{
b=n/2-m;
a=m-b;
}
if(a<0||b<0)a=b=-1;
printf("%d %d\n",a,b);
}
}

第2个回答  2018-12-22
其实就是数学问题,想清楚了,代码嗖嗖滴就写出来了😁
第3个回答  2018-12-22
#include<stdio.h>
int main()

{
int m, n, i, j, a[100], b[100], x;
int c;
i = 0;
while(scanf("%d%d", &m, &n)!=EOF)
{
if(n >= 2 * m)
{
x = n - 2 * m;
if(x % 2 == 0)
{
b[i] = x / 2;
a[i] = m - b[i];
}
else
{
a[i] = -1;
b[i] = -1;
}
}
else
{
a[i] = -1;
b[i] = -1;
}
i++;
while((c = getchar()) != '\n' && c != EOF);
}
for(j = 0 ; j < i; j++)
printf("%d %d\n", a[j], b[j]);
system("PAUSE");
return 0;本回答被网友采纳