这是一个C代码,可使用函数在50个元素的数组中查找平均值

问题描述

#include <stdio.h>
#include <stdlib.h>
float Findaverage(float n,float numbers[]) {
    float sum = 0;
    for (int j = 0; j < n; j++) {
        sum += numbers[j];
    }
    printf("The average number of the array is: %f",sum/n);

}




int main() {
    int sum = 0;
    float numbers[50];
    float average;
    printf("Enter 50 elements: ");
    // taking input and storing it in an array
    for(int i = 0; i < 50; ++i) {
        scanf("%f",&numbers[i]);
    }
    average = Findaverage(50,numbers[50]);
    printf("\nThe average number of the array is: %f",average );

    return 0;
}

输出给出错误“将'float'传递给不兼容类型'float *'的参数;以&开头的地址”。为什么会这样?

解决方法

对于初学者来说,函数def save_image(self,image): cv2.imwrite("/Users/scannedimage.jpg",image) return "/Users/scannedimage.jpg" def process_image(self,img): image = self.save_image(img) processed_image = ProcessImage().process(image) saved_image = self.save_image(processed_image) self.show_processed_image(saved_image) def show_processed_image(self,image): self.video_panel.pack_forget() image_path = Image.open(image) image = ImageTk.PhotoImage(image_path) self.logo_panel = tk.Label(main,image = image) self.logo_panel.pack() 不返回任何内容。

您需要将此语句添加到函数中

Findaverage

第一个参数应为整数类型,而不是return sum / n; 类型。

float

第二次调用该函数

float Findaverage(float n,float numbers[]) {
                  ^^^^^

具有类型average = Findaverage(50,numbers[50]); 而非类型numbers[50]的参数float无效。你需要写

float *

可以通过以下方式声明和定义函数

average = Findaverage(50,numbers);

该函数可以像

那样调用
double Findaverage( const float numbers[],size_t n ) 
{
    double sum = 0.0;

    for ( size_t i = 0; i < n; i++ ) 
    {
        sum += numbers[i];
    }

    return n == 0 ? 0.0 : sum / n;
}
,

更改

                    col
time                   
2018-11-13 10:00:00   e
2018-11-13 15:00:00   f
2018-11-13 16:00:00   g

average = Findaverage(50,numbers[50]);

average = Findaverage(50,numbers); 是指单个数组元素,而不是整个数组。它也是数组末尾(索引从numbers[50]0)之一。