输入格式:输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。n=0表示输入数据的结束,不做处理。
输出格式:对于每个测试实例,输出在第n年的时候母牛的数量。每个输出占一行。
鲜例输入:
2
4
5
0
样例输出:
2
4
6
解题难点:
1、如何求每年的牛的总数?
2、如何达到题目要求的输入输出格式?
解决方案:
#include<stdio.h>
#include<stdlib.h>
int nei(int n){//n表示年限
int i=0;
int sum=0;
int nem[4]={1,0,0,0};//定义一个数组,用来存放不同年龄段的牛 。nem[0]表示成熟牛的数量,nem[1]表示一岁的牛,以此类推
for(i=1;i<n;i++){
nem[0]+=nem[3];//成熟牛的数量等于原有牛的数量+ 将要四岁牛的数量
nem[3]=nem[2];//俩岁的牛长为三岁的牛
nem[2]=nem[1];
nem[1]=nem[0];
}
int a=0;
for(a=0;a<4;a++){
sum+=nem[a] ; //遍历数组将所有年龄段的牛加在一起
}
printf("%d\n",sum);
}
int main()
{
int n=0,v=0;
int *year=(int*)malloc(200);//分配220字节动态内存给year ,
int *zero=year;
int *zer=year;
scanf("%d",&n);
while(n!=0){//当没读到0时,将n的值放入动态内存year
*year=n;
year++;
scanf("%d",&n);
}
*year=0;
while(*zero!=0){//当没读到0时,将n的值放入nei()求牛的总数
nei(*zero);
// v=*zero;
zero++;
}
free(zer);
return 0;
}
1