我可以在具有两个整数参数的函数中 return double 或 float 吗?
Can I return a double or float in a function with two integer parameters?
我想用这个程序中的函数计算数字的平均值,但它不起作用:
#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函数和简单函数有什么区别?
第一个问题是你在main()
中使用它之前没有声明你的函数。在调用之前提供声明或原型。
double avg(int a[], int *n);
int main() {
...
其次,在第一个实现中,您没有存储函数
的 return 值
avg (arr, & size) ; // useless statement
只需将 return 值存储到一个变量中并打印它,它将按预期工作
double average = avg (arr, & size);
printf("%lf", average);
我想用这个程序中的函数计算数字的平均值,但它不起作用:
#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函数和简单函数有什么区别?
第一个问题是你在main()
中使用它之前没有声明你的函数。在调用之前提供声明或原型。
double avg(int a[], int *n);
int main() {
...
其次,在第一个实现中,您没有存储函数
的 return 值avg (arr, & size) ; // useless statement
只需将 return 值存储到一个变量中并打印它,它将按预期工作
double average = avg (arr, & size);
printf("%lf", average);