怎样改一下,才可以让这个小母牛第四年才成母牛生牛仔,我这个是直接生,怎样才能第四年生,下面有。请改下,您们,非常感谢,真的(语言-c++)

img

  1. img

  • 改改这个,母牛变小牛犊子的,然后第四年才可以生玉小母牛,害,各位,这个怎么改,第一次来这里

#include<stdio.h>
int main()
{

int age[4]={0,0,0,1};

int y,c;
printf("input years");
scanf("%d",&y);
for(c=0;c<y;c++)
{
    age[3] = age[3]+age[2]; 
    age[2] = age[1];
    age[1] = age[0];
    age[0] = age[3];
    

}
    printf("%d",age[0]+age[1]+age[2]+age[3]);
    return 0;

}

题目是啥,是否有测试数据?

这样写:

#include<stdio.h>
int main(void){
    int i,year,oxnum,oxnum1,oxnum2,oxnum3;
    
    printf("请输入年数:");
    scanf("%d",&year);
    
    for(int i=1;i<=year;i++){
        
        if(i<4){
            oxnum = oxnum1 = oxnum2 = oxnum3 = 1;
        }
        else{
            oxnum = oxnum1 + oxnum3;
            oxnum3 = oxnum2;
            oxnum2 = oxnum1;
            oxnum1 = oxnum;
        }
        printf("i =%2d->oxnumber =%3d \n",i,oxnum);
         
    }
    return 0;
} 
 

本题是递推类型的题,跟典型的斐波那契数列等很像:
第一年 s1 = 1
第二年 s2 = 1
第三年 s3 = 1
从第四年开始,每年的母牛头数为:上一年 + 前第3年(前第3年的每一头都可以生仔了)
第四年 s4 = s3+s1 = 1+1 = 2
第五年 s5 = s4+s2 = 2+1 = 3
......
第n年 s(n) = s(n)+s(n-3)
综上,可推出第 N 年奶牛的数量的递推公式为:S(N) = S(N-1) + S(N-3)
可编程如下:

#include <iostream>
using namespace std;

int cowNum(int N)
{
    if (N == 1 || N == 2 || N == 3)
    {
        return 1;
    }
    else
    {
        return cowNum(N - 1) + cowNum(N - 3);
    }
}

int main()
{
    cout << "你想知道多少年后奶牛的个数?";
    int year;
    cin >> year;

    cout << year << "年后奶牛的个数为:" << cowNum(year) << endl;
    return 0;
}

如有帮助,还请采纳!谢谢!