C语言 鸡兔同笼问题
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");
}
#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");
}
#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)以及超级电脑等作业平台。
各位对异常情况的理解有点问题哈,其实很简单。
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×鸡兔总只数-鸡兔总脚数)÷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一定是整数。所以这个无解就不怎么对了?