计算母牛生小牛的问题,代码哪里需要改进?
问题描述:
Description
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
Input
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。
n=0表示输入数据的结束,不做处理。
Output
对于每个测试实例,输出在第n年的时候母牛的数量。
每个输出占一行。
Sample Input
2
4
5
0
Sample Output
2
4
6
#include<stdio.h>
int main()
{
int n;
int sum = 1;
while (scanf("%d",&n)!=EOF)
{
if (n==0)
{
continue;
}
if (n<4)
{
for (int i = 0; i < n; i++)
{
sum++;
}
}
else
{
sum = 4;
for (int i = 1; i <= n-3; i++)
{
sum += i;
}
}
printf("%d\n", sum);
}
return 0;
}
答
题主可以参考参考我的代码
🙌
int main()
{
// . . .
//年数:1 2 3 4 5 6 7 8 9 10
//头数;1 1 1 2 3 4 6 9 13 19
// num1 num2 num3 num4
// num1 num2 num3 num4
//其实规律就是:相隔两年的牛数相加等于后一年的牛数
//num1年的牛数+num3年的牛数==num4年的牛数
//将num1,num2,num3,num4当成一体的,每年往后一起移动一个位置
int num1 = 1, num2 = 1, num3 = 1, num4;//牛数
int n;//年数
printf("请输入第几年:\n");
scanf("%d", &n);
if (n <= 3)
printf("只有一头牛!\n");
else
for (int i = 1; i <= n-3; i++)//前三年不算,所以减去才对
{
num4 = num1 + num3;
num1 = num2;
num2 = num3;
num3 = num4;
}
printf("在第%d年的时候有牛%d头", n, num4);
return 0;
}
望采纳😘
答
1 2 3 4 6 8