用C语言编写鸡兔同笼问题

鸡兔同笼
总头数n,总腿数m。M和N都是由键盘输入的数据,求出鸡和兔各几只,如果无解,则输出No answer

#include <stdio.h>
void main( )
{
int ret = 0; // 表示最后一个printf的返回值
while(1)
{
int h,f,c,r;
printf("请输入头的数目:");
scanf("%d",&h);
printf("\n请输入脚的数目(必须为偶数):");
scanf("%d",&f);
while(f%2!=0 && f != 0 && h != 0) //这里的不等于的条件可以不加
{
printf("\n输入脚的数目为奇数,请重新输入脚的数目(必须偶数):");
scanf("%d",&f);
if( f > 4h || f < 2h)
continue;
}

for(c=0;c<=h;c++)
for(r=1;r<=h;r++) //这句改成:for(r=0; r <= h-c; r++)好点,减少的循环的次数,加了效率
{
if(c+r==h&&2*c+4*r==f)
ret = printf("\n鸡的数目为%d,兔子的数目为%d\n\n",c,r);
}
if( ret == 39) /*作用是输入一次成功后,结束大循环, 可以不要*/
break;
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-01-26
#include<stdio.h>
#define MAX 10
int main()
{
int i,n,a[MAX];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
{
if(a[i]%2)
printf("0 0");
else
printf("%d %d",(a[i]%4)/2+a[i]%4,a[i]%2);
}
return 0;
}
主要明白鸡只有两只脚,兔有四只脚。
第2个回答  2018-02-27
int m = 0, n = 0;
int a, b;
printf("总头数");
scanf("%d",&n);
printf("总腿数");
scanf("%d",&m);
b = (m - 2n )/2
a = n - b;
if( a + b == n && 2 * a + 4 * b = m && a >= 0 && b >= 0)
    printf("鸡和兔各%d, %d只", a, b);
else 
    printf("No answer");