函数不返回结果c(在项目文件中)

Pat*_*rra 0 c dev-c++

当我在.c文件中运行此代码时,它可以工作,但是当我为它创建一个项目时,我调用的函数将只返回0.00.为什么?为什么它不能在项目文件中工作?

我正在使用DevC++.

#include<stdio.h>

float mean(int total, int max);

int main(){
    int i,max, total=0;
    int array[max];
    printf("Enter max: ");
    scanf("%d",&max);

    for(i=0; i<max; i++){
        scanf("%d",&array[i]);
        total+=array[i];
    }
    printf("Total: %d\n",total);
    printf("Mean: %.2f",mean(total,max));
    return 0;
}

float mean(int total, int max){
    float ave;
    ave=(float)total/max;

    return ave;
}
Run Code Online (Sandbox Code Playgroud)

Chr*_*ner 8

问题是与这两行代码-你声明的大小arraymax之前你实际工作出了什么价值max了,这将导致无法解释的行为.您的代码很可能是按预期工作的纯粹机会.

int array[max];
...
scanf("%d",&max);
Run Code Online (Sandbox Code Playgroud)

你要做的事情的方法是分配足够大的内存来保存你的阵列.您可能想要检查max是否也大于0并且还scanf找到了一个数字.但它的粗略要点是这样的:

int max;
int *array;
printf("Enter max: ");
scanf("%d",&max);
array=malloc(sizeof(int)*max);

/* your code goes here */

free(array);
Run Code Online (Sandbox Code Playgroud)

  • @PatrickEsguerra - `max`和`array`一切都错了.当经验丰富的程序员告诉新手他们犯了一个重要的错误时,新手最好不要只是驳回他们的主张. (2认同)