当我在.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)
问题是与这两行代码-你声明的大小array为max之前你实际工作出了什么价值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)