首页 > 解决方案 > 如何使用数组获得斐波那契数列和数列之和?

问题描述

我尝试了一个 C 程序,它显示了斐波那契数列和数列之和,从用户那里获取 N 的值。这是给出的代码

#include <stdio.h>

int main()
 {
    int m[100],i,n,j;

    printf("How many numbers? Enter : ");
    scanf("%d",&n);
    m[0]=0;
    m[1]=1;
    
    for(i=2; i<n; i++)
    {
        m[i] = m[i-1] + m[i-2];
    }
    printf("\n");
    for(i=0; i<n; i++)
    {
        printf("%d ",m[i]);
    }
    for(j=2; j<n; j++)
    {
        m[j] = m[j-1] + m[j-2];
    }
    printf("\nSum is %d\n\n",m[j]);
    
    return 0;
 }

另外,我收到此错误消息:::

||=== Build: Debug in Array (compiler: GNU GCC Compiler) ===|
C:\MinGW\Array\main.c|23|fatal error: error writing to C:\Users\User\AppData\Local\Temp\ccemlrUr.s: No space left on device|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

标签: c

解决方案


我不确定该错误(您的磁盘可能已满,正如已经建议的那样),它在我的机器上运行良好,但您的总和代码并不好。您可以尝试这样的事情,不需要额外的 sum 循环:

#include <stdio.h>

int main()
{
    int m[100],i,n;

    printf("How many numbers? Enter : ");
    scanf("%d",&n);

    m[0]= 0;
    m[1]= 1;

    int s = 1;
    for(i=2; i<n; i++)
    {
        m[i] = m[i-1] + m[i-2];
        s += m[i];
    }

    printf("\n");

    for(i=0; i<n; i++)
    {
        printf("%d ",m[i]);
    }

    printf("\nSum is %d\n\n",s);
    return 0;
}

PS,此代码不涵盖 n == 1 或 n == 0 的情况


推荐阅读