簡體   English   中英

使用函數查找數組的最大值,最小值和總和

[英]Find max, min and sum of an array using function

我想創建一個程序來查找給定數組的最大值,最小值和總和,但是當我將代碼帶到編譯器時,它expressed expression before 'int'返回expressed expression before 'int'而所有函數的too few argumentstoo few arguments

這是我的代碼,請告訴我為什么它不起作用。

#include <stdio.h>
#include <stdlib.h>

void print_array(int array[], int len) {
    // print array on screen
    int b;
    printf("Array: ");
for (b = 0; b < len - 1; b++) {
    printf("%d, ", array[b]);
}
if (b >= len - 1) {
    printf("%d\n", array[b]);
}

}

// function
int min(int *x, int len) {
    int mintemp = x[0], i;
    for (i = 1;i < len;i++) {
        if(x[i] < mintemp) {
            mintemp = x[i];
        }
    }
    return mintemp;
}
int max(int *y, int len) {
int maxtemp = y[0], j;
for (j = 1;j < len;j++) {
        if(y[j] > maxtemp) {
            maxtemp = y[j];
        }
    }
    return maxtemp;
}
int sum(int *z, int len) {
    int sumtemp = 0, k;
    for (k = 0;k < len;k++) {
       sumtemp = sumtemp + z[k];
    }
    return sumtemp;
}


int main() {
    int array[] = {3, 9, 1, 2, 5, 8, 7, 6, 4, 10, 11};
    int len = 11;

    print_array(array, len);
    // print other elements on screen
    printf("Maximum: %d\n", max(int *x, int len));
    printf("Minimum: %d\n", min(int *y, int len));
    printf("Summation: %d\n", sum(int *z, int len));
return 0;

}

問題在於調用函數。 C中的函數調用是這樣的

function_name(argument 1, argument 2, argument 3, ......, argument n);

無需像在代碼中那樣在調用中隨參數指定數據類型。

你也被傳遞指針xyz不指向您的陣列。

我已更正代碼,如下所示。

int main() {
    int array[] = {3, 9, 1, 2, 5, 8, 7, 6, 4, 10, 11};
    int len = 11;

    print_array(array, len);
    // print other elements on screen
    printf("Maximum: %d\n", max(array, len)); // pass array and len
    printf("Minimum: %d\n", min(array, len));
    printf("Summation: %d\n", sum(array, len));
return 0;

}

如果你想通過指針傳遞陣列功能,你可以不喜歡這樣。

int main() {
    int array[] = {3, 9, 1, 2, 5, 8, 7, 6, 4, 10, 11};
    int len = 11;

    int *x = array;
    int *y = array;
    int *z = array;

    print_array(array, len);
    // print other elements on screen
    printf("Maximum: %d\n", max(x, len));
    printf("Minimum: %d\n", min(y, len));
    printf("Summation: %d\n", sum(z, len));
return 0;

}

同樣,也無需聲明3個不同的指針並將其傳遞給函數,您可以只聲明一個並在后續調用中重用它。

希望這可以幫助。!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM