C 我可以在具有两个整数参数的函数中返回double或float吗?

C 我可以在具有两个整数参数的函数中返回double或float吗?,c,void,C,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; } double avg (int a[], int *n ) { int sum = 0;

我想在这个程序中用一个函数计算数字的平均值,但它不起作用:

#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;
}
#包括
#包括
int i;
int size=6;
int main(){
int-arr[6]={1,2,3,4,5,6};
平均值(arr和尺寸);
返回0;
}
双平均值(整数a[],整数*n){
整数和=0;
双倍平均;
对于(i=0;i<*n;i++){
总和=总和+a[i];
}
平均值=(双)和/*n;
收益率平均值;
}
但如果我用同样的简单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);
}
#包括
#包括
int i;
int size=6;
int main(){
int-arr[6]={1,2,3,4,5,6};
平均值(arr和尺寸);
返回0;
}
无效平均值(整数a[],整数*n){
整数和=0;
双倍平均;
对于(i=0;i<*n;i++){
总和=总和+a[i];
}
平均值=(双)和/*n;
printf(“%lf”,平均值);
}

这两个void函数与简单函数有什么区别?

第一个问题是,在
main()
中使用函数之前,您没有声明函数。在调用之前提供声明或原型

double avg(int a[], int *n);
int main() { 
...
其次,在第一个实现中,您没有存储函数的返回值

avg (arr, & size) ; // useless statement
只需将返回值存储到一个变量中并打印它,它就会按预期工作

double average = avg (arr, & size);
printf("%lf", average);

什么是
简单无效函数
?1)您应该声明
双平均值(int a[],int*n)在main之前,并且2)您没有打印返回的结果。它本身不会打印…第一个代码段缺少一个打印语句。为什么要传递一个指向大小的指针而不仅仅是大小?非常感谢!我不知道我必须为函数声明一个原型。我主要使用void函数,它们也在没有原型声明的情况下工作。@jaraipali声明对于您在程序中使用的所有类型的函数都是必需的,除非您在调用之前定义它们。