使用函数查找数组的最大值,最小值和总和

时间:2017-10-24 17:33:13

标签: c

我想创建一个程序来查找给定数组的最大值,最小值和总和,但是当我将代码带到编译器时,它会将expressed expression before 'int'too 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;

}

1 个答案:

答案 0 :(得分:2)

问题在于调用函数。 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个不同的指针并将其传递给函数,您只需声明一个并在后续调用中重复使用它。

希望这会有所帮助。!!