我想用这个程序中的函数来计算数字的平均值,但它不起作用:
#include <stdio.h>
#include <stdlib.h>
int i;
int size = 6;
int main () {
int arr[6] = {1, 2, 3, 4, 5, 6};
avg (arr, & size);
return 0;
}
double avg (int a[], int *n ) {
int sum = 0;
double average;
for (i = 0 ; i < *n ; i++) {
sum = sum + a[i];
}
average = (double) sum / *n;
return average;
}
但如果我使用相同的简单void函数来代替它,它可以正常工作:
#include <stdio.h>
#include <stdlib.h>
int i;
int size = 6;
int main () {
int arr[6] = {1, 2, 3, 4, 5, 6};
avg(arr, & size);
return 0;
}
void avg (int a[], int *n) {
int sum = 0;
double average;
for (i = 0 ; i < *n ; i++) {
sum = sum + a[i];
}
average = (double) sum / *n;
printf("%lf", average);
}
这两个void函数和一个简单函数有什么区别?
答案 0 :(得分:2)
第一个问题是,在main()
中使用之前,您尚未声明自己的功能。在调用之前提供声明或原型。
double avg(int a[], int *n);
int main() {
...
其次,在第一个实现中,您不存储函数的返回值
avg (arr, & size) ; // useless statement
只需将返回值存储到变量中并打印它,它将按预期工作
double average = avg (arr, & size);
printf("%lf", average);