C - 数组和函数不断返回零

Imp*_*lub 1 c arrays

我正在尝试编写一个程序,让用户可以生成1-75个Fibonacci数字,打印它们,然后将所有这些值一起添加到所有总和中.我没有问题生成数字和打印它们,但由于某种原因,我在sum函数方面遇到了很多麻烦.出于某种原因,它只返回0 ......并且在我盯着它看了几个小时后,我感到很茫然.任何和所有的帮助将不胜感激.我的代码如下:

#include <stdio.h>
#include <stdlib.h>

//function to calculate fibonacci number 1-75 (user specified)
int fibonacci(int * array, int size)
{
    int i;
    unsigned long long int Fibonacci[size]; //generating the array to save the Fibonacci values

    Fibonacci[0] = 0; //by definition
    Fibonacci[1] = 1; //by definition

    for (i = 2; i < size; i++) {
        Fibonacci[i] = Fibonacci[i-2] + Fibonacci[i-1]; //equation to calculate the numbers
    }

    for (i = 0; i < size; i++) {
        printf("%llu\t", Fibonacci[i]); //printing out the numbers
    }

    printf("\n");
    return size;
}

int fibonacciSum(int * array, int size)
{
    int i;
    int sum = 0;

    for (i = 0; i < size; i++) {
        sum += array[i];
    }

    return sum;
}

int main(void)
{
    int size;

    printf("How many Fibonacci numbers do you want to generate (between 1 and 75)?\n");
    scanf("%i", &size);

    int * FibonacciNumbers = (int*) calloc(size,sizeof(int));

    if (size < 1 || size > 75) {
        printf("Bad number!");
        return 1;
    }

    fibonacci(FibonacciNumbers, size);
    printf("The sum of the Fibonacci numbers is: %d\n", fibonacciSum(FibonacciNumbers, size));

    return 0;

}
Run Code Online (Sandbox Code Playgroud)

Dec*_*eck 6

如果你重写函数fibonacci

int fibonacci(int * array, int size)
{
    int i;

    array[0] = 0; 
    array[1] = 1; 

    for (i = 2; i < size; i++) {
        array[i] = array[i-2] + array[i-1]; //equation to calculate the numbers
    }

    for (i = 0; i < size; i++) {
        printf("%d\t", array[i]); //printing out the numbers
    }

    printf("\n");
    return size;
}
Run Code Online (Sandbox Code Playgroud)

因为您在Fibonacci数组上的作业不会影响array哪个存储在main中并在其他函数中使用.