小针鱼 发表于 2021-10-16 11:39:32

xdm帮我看看哪里出错了

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

}

小针鱼 发表于 2021-10-16 11:59:23

dd

傻眼貓咪 发表于 2021-10-16 12:21:43

请问你想输出的是什么?没有题目,单代码,很难帮你

小针鱼 发表于 2021-10-16 12:34:35

有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?

小针鱼 发表于 2021-10-16 12:35:06

多谢了

hrpzcf 发表于 2021-10-16 13:54:47

本帖最后由 hrpzcf 于 2021-10-16 14:11 编辑

#include <stdio.h>

unsigned getnum(unsigned);

int main()
{
    unsigned years;

    while (1)
    {
      printf("输入年数:");
      while (scanf("%u", &years) != 1 || years < 1)
      {
            printf("输入有误,重新输入!\n");
            goto flush;
      }
      printf("第%u年牛总数:%u。\n", years, getnum(years));
    flush:
      // 清空缓冲区的剩余字符
      while (getchar() != '\n')
            ;
    }
}

unsigned getnum(unsigned x)
{
    if (x <= 4)
      /* 前4年都是每年增加一头
      因最早第2年生的小牛要到第5年才开始生小牛,以此类推 */
      return x;
    else
      /* 也就是当年牛总数是过去第1年总数加上过去第3年总数 */
      return getnum(x - 1) + getnum(x - 3);
}

傻眼貓咪 发表于 2021-10-16 13:56:12

本帖最后由 傻眼貓咪 于 2021-10-16 14:04 编辑

这题就是斐波那契数列(Fibonacci Sequence):0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144 ...

但你的题目稍微改一点,比如:题目用牛替代,第4年新牛才开始孕出新小牛
以下为我的代码,共参考:#include <stdio.h>

int fibonacci(int n){ // 定义函数:斐波那契数列
    if(!n) return n; // 当参数是 0,则返回 0
    else if(n == 1) return 1; // 当参数是 1,则返回 1
    return fibonacci(n-1) + fibonacci(n-2); // 否则递归函数(参数-1 和 参数-2 作为新参数)
}

int main(){
    do
    {
      int year;
      scanf("%d", &year); // 输入年
      if(year == 0) break; // 当年份为 0,则退出循环
      printf("%d\n", fibonacci(year-1)); // 调用函数:打印该年份的母牛数量
    }
    while(1);
    return 0;
}2
2
5
8
15
987
0
年 2 5 15
母牛数量 2 8 987


页: [1]
查看完整版本: xdm帮我看看哪里出错了