蓝桥杯练习:母牛的故事

1.母牛的故事
题目描述
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。
请编程实现在第n年的时候,共有多少头母牛?
输入
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。
n = 0表示输入数据的结束,不做处理。
输出
对于每个测试实例,输出在第n年的时候母牛的数量。
每个输出占一行。
样例输入
2
4
5
0
样例输出
2
4
6
两种方法:<将方法一或者方法二取消注释就能运行>

#include <stdio.h>
void main() {
    int N;
    ////方法一:递归
    //while (scanf("%d",&N)&&N!=0)/*这里注意下,‘scanf’默认有个int类型的返回值,若输入的数字未被接收(这里是N接收输入的值),则返回0,若有n个输入值,则 返回n,若读入数据时遇到了“文件结束”则返回EOF(即-1);所以,将条件scanf("%d",&N)&&N!=0换成scanf("%d",&N)!=0无法跳出while循环(按照题目要求,输入0跳出循环)。*/
    //{
    //    int a1 = 1, a2 = 2, a3 = 3,an;
    //    int i;
    //    if (N<4&&N>0)//小细节,注意N要大于0
    //    {
    //        printf("%d\n", N);
    //        
    //    }
    //    else {          //这里应该把else改成else if(N>=4)更好
    //        for (i = 4; i <= N; i++)
    //        {
    //            an = a1 + a3;
    //            a1 = a2;
    //            a2 = a3;
    //            a3 = an;
    //        }
    //        printf("%d\n", an);
    //    }
    //}

    ////方法二:数组递推
    //int array[56];//大于等于56都行,因为题目要求输入55,数组是从下标1至55,所以56为结束位‘\0’;
    //array[1] = 1, array[2] = 2, array[3] = 3;//
    //for (;scanf("%d",&N)&&N!=0; )//此处for循环不需要循环变量赋初值和循环变量增值;其他和while循环相同;
    //{
    //    if (N<4&&N>0)
    //    {
    //        printf("%d\n", N);
    //    }
    //    else
    //    {
    //        int i;//
    //        for (i = 4; i <= N;i++) {
    //            array[i] = array[i - 1] + array[i - 3];
    //        }
    //        array[i] = '\0';
    //        printf("%d\n",array[N]);
    //    }
    //}
}

猜你喜欢

转载自www.cnblogs.com/destiny-2015/p/11766626.html