监狱风云百度云:鸡兔同笼的问题 c语言怎么样编写

来源:百度文库 编辑:高校问答 时间:2024/05/09 05:05:50

1、编写思路如下:

假设有x只鸡,y只兔,两者一共有m只头,n只脚,则有:

x + y = m ; 2 * x + 4 * y = n ;

即得到关系式,x + 2y =n/2 , x + y = m , y = n/2 - m , x = 2 * m - n/2。  

2、代码及注释如下:

#include<stdio.h>

main ( )

{

int a, b ;

printf("请分别输入动物头与脚的数目:\n");

scanf("%d%d",&a,&b); //头数为a, 脚数目为b;

printf("一共有%d只鸡,%d只兔子\n",b/2-a,2 * a - b/2);

}

扩展资料:

常见鸡兔同笼类型问题:

1、班主任张老师带五年级(2)班50名同学栽树,张老师栽5棵,男生每人栽3棵,女生每人栽2棵,总共栽树120棵,问几名男生,几名女生?

2、大油瓶每瓶装4千克,小油瓶2瓶装1千克,现有100千克油装了共60个瓶子。问大小油瓶各多少个?

3、小毛参加数学竞赛,共做20道题,得67分,已知做对一道得5分,不做得0分,错一题扣1分,又知道他做错的题和没做的同样多。问小毛做对几道题?

4、有蜘蛛,蜻蜓,蝉三种动物共18只,共有腿118条,翅膀20对(蜘蛛8条腿;蜻蜓6条腿,2对翅膀;蝉6条腿,1对翅膀),三种动物各几只?

参考资料来源:百度百科-鸡兔同笼问题

鸡兔同笼是中国古代的数学名题之一。

大约在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语言

输入说明: 输入为两个正整数,第一个为 M 的值,第二个为 N 的值,用空格分隔。 

输出说明: 若有解,输出两个整数,用空格分隔,第一个代表鸡的只数,第一个代表兔子的只数;若无解,直接输出一个 0。

算法:以列举法写程序,让计算机从鸡为0开始执行计算,利用循环语句计算大量次数后,得出最终结果。

具体程序为:

#include <stdio.h>

int main()

{int chicken,rabbit;//鸡,兔子

int M,N;//头,脚

printf("M=,N=");

scanf("%d %d",&M,&N);

for(chicken=0;chicken<=M;chicken++)//鸡的数量从0到总头数M尝试

{if(chicken*2+rabbit*4==N)//如果总脚数与输入的总脚数相同

{printf("%d %d",chicken,rabbit);//分别输出鸡、兔

return 0;//停止程序}}//for执行完表示找不到

printf("0");return 0;}

扩展资料:

鸡兔同笼问题算法有很多种,编写出的程序不尽相同。下面列举几种算法,编写程序会更为简单一些。

有若干只鸡兔同在一个笼子里,从上面数,有35个头,从下面数,有94只脚。问笼中各有多少只鸡和兔?

(1)假设全是鸡:2×35=70(只),鸡脚比总脚数少:94-70=24 (只)

兔子比鸡多的脚数:4-2=2(只),兔子的只数:24÷2=12 (只),鸡的只数:35-12=23(只)

假设全是兔子:4×35=140(只),兔子脚比总数多:140-94=46(只)

兔子比鸡多的脚数:4-2=2(只),鸡的只数:46÷2=23(只),兔子的只数:=35-23=12(只)(2)设鸡有x只,兔有y只。

解得

参考资料:鸡兔同笼(一种数学奥数题目)_百度百科



我帮你编一个试试
假设有head个头和foot只脚 程序如下:
#include<stdio.h>
void main()
{int i,head,foot,rabbit,chick;
printf("Enter the 2 numbers :");
scanf("%d%d",&head,&foot);
printf("head=%d,foot=%d\n",head,foot);
for(i=0;i<=head;i++)
{rabbit=i;
chick=head-rabbit;
if(rabbit*4+chick*2==foot)
printf("rabbit=%d,chick=%d\n",rabbit,chick);
}
}

#include "stdio.h"
void main()
{
long int a,b,c,d;
char ch,bh;
printf("请输入鸡与兔子的总数\n");
while(scanf("%d",&a)!=1)
{
printf("请输入正确的数量:");
for ( ; (ch = getchar())!='\n' && ch != EOF; )
{
continue;
}
}
printf("请输入鸡与兔子的脚的总数\n");
while(scanf("%d",&b)!=1)
{
printf("请输入正确的数量:");
for ( ; (bh = getchar())!='\n' && bh != EOF; )
{
continue;
}
}
c=(4*a-b)/2;
d=a-c;
if(c>=0&&d>=0)
{
if(c*2+d*4==b)
{
printf("鸡有%ld只\n",c);
printf("兔子有%ld只\n",d);
}
else printf("同学,我看你给的数有错吧!");
}
else printf("同学,我看你给的数有错吧!");
}