c语言算法,鸡兔同笼
已知鸡和兔的总数量为n,总腿数为m,输入n和m,依次输出鸡的数目和兔的数目。如果无解则输出No answer。
输入:
两个整数b和m,如上所述。
输出:
鸡的数目和兔的数目。
我们假设a = 鸡只数,b = 兔只数(兔的脚数×总只数-总脚数)÷(兔的脚数-鸡的脚数)=鸡的只数,a = ( 4*n – m )/2。
总只数-鸡的只数=兔的只数,b = n – a。
具体代码:
#include “stdio.h”
int main() {
int a,b,n, m;
// a鸡的数量
// b兔的数量
// n鸡兔总数
// m总脚数
scanf(“%d %d”, n,m);
a = (4 * n – m) / 2;//算出鸡的数量
b = n – a;//算出兔的数量
if (a = 0 || b = 0) {
//结果小于等于0,答案不成立,无解
printf(“No answer”);
} else {
//结果大于0
printf(“%d %d”, a, b);
}
return 0;
}
扩展资料:
鸡兔同笼解题思路:如果先假设它们全是鸡,于是根据鸡兔的总数就可以算出在假设下共有几只脚,把这样得到的脚数与题中给出的脚数相比较,看看差多少,每差2只脚就说明有1只兔,将所差的脚数除以2,就可以算出共有多少只兔。
概括起来,解鸡兔同笼题的基本关系式是:兔数=(实际脚数-每只鸡脚数×鸡兔总数)÷(每只兔子脚数-每只鸡脚数)。类似地,也可以假设全是兔子。
用C语言编写鸡兔同笼问题
#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
!=
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==h2*c+4*r==f)
ret
=
printf(“\n鸡的数目为%d,兔子的数目为%d\n\n”,c,r);
}
if(
ret
==
39)
/*作用是输入一次成功后,结束大循环,
可以不要*/
break;
}
}
鸡兔同笼的问题 c语言怎么样编写
鸡兔同笼是中国古代的数学名题之一。
大约在1500年前,《孙子算经》中就记载了这个有趣的问题。书中是这样叙述的:
今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?
这四句话的意思是:
有若干只鸡兔同在一个笼子里,从上面数,有35个头,从下面数,有94只脚。问笼中各有多少只鸡和兔?
已知鸡和兔的总数量为n,总腿数为m。输入n和m,依次输出鸡和兔的数目,如果无解,则输出“No answer”
程序如下:
#include stdio.h int main()
{ int T; int n; int m;
scanf(“%d”,T);
while(T–)
{
scanf(“%d%d”,n,m);
if((m-2*n)=0 (m-2*n)%2==0 (4*n-m)=0 (4*n-m)%2==0)
printf(“%d %d\n”,(4*n-m)/2,(m-2*n)/2);
else
printf(“No answer\n”);
} return 0;
}
扩展资料:
C语言新手编程注意事项:
1、书写标识符时,忽略了大小写字母的区别。
2、忽略了变量的类型,进行了不合法的运算。
3、将字符常量与字符串常量混淆。
4、忽略了“=”与“==”的区别。
5、忘记加分号。
6、多加分号。
7、输入变量时忘记加地址运算符“”。
8、输入数据的方式与要求不符。
参考资料来源:百度百科-C语言