解题思路:
可以设定四个变量分别代指不同年头的母牛。
程序里所使用的变量代表的意义:
a:一个年头的母牛;
b:二个年头的母牛;
c:三个年头的母牛;
d:四个及以上个年头的母牛。
第一年时d=1,其他的则为0。而之后的每一年,既已设四种年头的母牛数分别为a,b,c,d,则下一年四种年头的母牛数分别是:
一个年头的母牛:d+c;
二个年头的母牛:a;
三个年头的母牛:b;
四个及以上个年头的母牛:d+c。
以此为思路编写的代码如下:
递归法:

#include<stdio.h>
int cow(int a,int b,int c,int d,int n)
{
    n--;
    if(n==0)
    {
         printf("%d\n",a+b+c+d);
         return 0;
    }
    cow(d+c,a,b,d+c,n);
}
int main(){
    int n;
    while(1)
    {
         scanf("%d",&n);
         if(n==0) break;
         cow(0,0,0,1,n);
     }
}

循环法:

#include<stdio.h>
int main(){
    int n,a,b,c,d;
    while (1)
    {
        a=b=c=0;
        d=1;
        scanf("%d",&n);
        if(n==0) break;
        while(--n!=0)
        {
            d=d+c;
            c=b;
            b=a;
            a=d;
        }
    printf("%d\n",a+b+c+d);
    }
}

以上两种方法虽然方法不同,但思路是一样的。

点赞(0)
 

0.0分

2 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 1 条评论

吴筱 4年前 回复TA
还可以用数组做,关键是每循环一次,母牛的数目都要记录下来,然后根据输入的n的值,从这些数中提取出答案,代码如下:
#include<stdio.h>
int main()
{
    int a[55]={1,1,2,3,4};
    a[0]=1;
    a[1]=1;
    a[2]=2;
    a[3]=3;
    int n,i,j=0,m,p;
    int b[1000]={0};/*用于存放输入的n对应的结果*/
    for(i=4;i<55;i++)
        a[i]=a[i-1]+a[i-3];
    scanf("%d",&n);
    while(n!=0&&n<55)
    {
        m=a[n];
        b[j]=m;
        j=j+1;
        p=j;/*记录输入次数*/
        scanf("%d",&n);
    }
    for(p=0;p<j;p++)
        printf("%d\n",b[p]);
    return 0;
}