#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;
}
}
#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*4b=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");
}
鸡兔同笼问题,归根结底是一个数学问题。用C语言处理数学问题,无外乎两种方式。
假定头的数量为A, 脚的数量为B。
一、暴力求解:
//枚举鸡的数量
int flag = 0;
for(i = 0; i = A; i++) {
j = A - i;
if (i * 2 + j * 4 == B) {
flag = 1;
printf("ans is: %d, %d\n", i, j);
break;
}
}
if (flag == 0) {
puts("No answer!");
}
二、建立数学模型求解
鸡兔同笼问题是个二元一次方程组问题。
X + Y = A
2X + 4Y = B
X = (4A - B) / 2
Y = (B - 2A) / 2
转换成代码:
if ( (4 * A - B) % 2 == 0 (B - 2 * A) % 2 == 0) {
printf("ans is: %d, %d\n", (4 * A - B) / 2 , (B - 2 * A) / 2);
} else {
puts("No answer!");
}
#includestdio.h
int main()
{
int a,b,M,N;
printf("请输入鸡兔的总头数\n");
scanf_s("%d",a);
printf("请输入鸡兔的总腿数\n");
scanf_s("%d",b);
scanf_s("%d",M);
M=(2*a)-(b/2);
printf("鸡的数目为%d只");
scanf_s("%d",N);
N=(b/2)-(a);
printf("兔的数目为%d只");
return 0;
}
我目前是C语言的新手,目前只会做这一类。如果用的是VS(visual studio)编程的话,scanf后必须加_s,这是VS独有的,其他的编程软件随意。