C语言编程:母牛的问题

来源:百度知道 编辑:UC知道 时间:2024/06/21 13:07:50
有一头母牛,从出生的第4年起,在每年年初生一头小母牛,每头小母牛从第4年起,每年年初也生一头小母牛。问从第一头母牛生第一头小母牛算起,到第20年时,牛的头数共有多少(假定每头母牛都恰好存活15年)
可是从第一头母牛生第一头小牛算起。第一年不应该是两头牛吗。能把思路讲下吗。

#include<stdio.h>
#define Max 20//0记做第一年(2头牛),20记做第二十年
void main()
{

int sum=1,i,year,a[100]={0};//sum记录总数,a[]储存每头牛的存活年数
for(year=0;year<=Max;year=year+4)//年数按4年递增
{
//此循环目的是查看每头牛的年龄,并作出判断操作
for(i=sum-1;i>=0;i--)//因为数组从0开始所以sum要减一
{
a[i]+=4;//每头牛成长4岁
if(a[i]>15&&a[i]<20)//表示在这一年死过的牛
sum-=1;//总数减一

}
sum=2*sum;//再生一批牛
}
printf("%d\n",sum);
}
第16年才是26头,第20年应为48头,而不是50头,前面程序有算得50头的,应该不正确,请再检查算法
思路呢就是:
比如说第一年有两头牛,先让他们的年龄+4,然后查看是否死掉,死掉的从总数中减去再乘以2,依次类推

#include <stdio.h>
void main()
{
int year=1, sum=1, dath=1;
for(year=1;year<=20;year++)
{if(year%4==0)
{if(year>=15) sum--;

sum*=2;}
}

printf("%d",sum);
}
结果26头;
12年的时候是8头,15年的时候只有7头了,16年就是14头,19年的时候是13头了,20年只有26头了。

只要理清思路,这个问题就很简单了
#include <stdio.h>
void main