C语言 鸡兔同笼问题

Description鸡和兔关在同一笼子中,已知总数量n和腿的总数量m,求鸡的数量和兔的数量。 Input输入2个整数分别是n和mOutput输出鸡的数量和兔的数量,中间用空格隔开,如果无解则输出No 我的程序 #include<stdio.h>
int main(void)
{
int n,m,a,b;
scanf("%d%d",&n,&m);
a=2*n-m/2;
b=n-a; if(a%1!=0||b%1!=0)
printf("No\n");
else
printf("%d %d\n",a,b);
return 0;
}用的是ACM判题系统,C-FREE测试正常,上传系统四次都显示WA,求大神帮看错误和不简洁的地方
测试用例Sample Input14 32Sample Output12 2

#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-02-19

#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");    

}

第2个回答  2018-08-27

#include<bits/stdc++.h>

using namespace std;

int main()

{

int a,b,c,d;

a=35,b=94;

c=2*a-b/2;

d=b/2-a;

cout<<"c="<<c<<"d="<<d<<endl;

return 0;

}

拓展资料

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。



本回答被网友采纳
第3个回答  2014-03-17

各位对异常情况的理解有点问题哈,其实很简单。

C程序总是能算出答案,无论什么数据,只是这个数据无法再算回去。

因此,异常的情况是m != 4 * a + b * 2 || n != a + b,当然,要注意m,n不能小于1,负数和0不是有效输入。


另举两个我认为有趣的解法:

    让鸡和兔都举起两只脚,这里应该只能数到兔子的脚,(m - 2*n)/2即得兔子的数量。

    让鸡放下翅膀当脚,这时有4n个脚,其中真的脚只有m个,有4*n - m个翅膀,鸡的数量是(4 * n - m) / 2

第4个回答  2014-03-16
你使用的是下面这个算法:
鸡的只数=(4×鸡兔总只数-鸡兔总脚数)÷2
兔的只数=鸡兔总只数-鸡的只数

但是不懂的是
if(a%1!=0||b%1!=0)

你这里是什么意思??

另外,输出时,别输出\n 这种多余的字符,只按照要求以空格分隔就好了??追问

if(a%1!=0||b%1!=0) 是 “如果无解则输出No”,就是a和b不是整数的情况 ,是不是我想错了。。。

\n这种是为了看起来顺眼打上的-.-,前几个也是这么提交的,问题应该不是这个吧

追答

a b怎么可能不是整数呢?你声明的a 和 b都是int类型,那表示 a 和b一定是整数。所以这个无解就不怎么对了?

追问

这样啊……我考虑不周,那具体条件应该怎么改?