【发布时间】:2020-11-10 22:24:44
【问题描述】:
我正在编写代码来搜索最大值、最小值并显示数组的总和。我对求和和显示数组没有任何问题,但是当我试图找到最大值和最小值时总是有问题,程序总是给我数字 9 而不是正确的数字。
代码是:
#include <stdio.h>
#include <stdlib.h>
void print_array(int array[], int len) {
for (int i=0; i<len; i++) {
printf("%d", array[i]);
for (int i=0; i<1; i++) {
printf(", ");
}
}
}
void print_min(int array[], int len, int min) {
for (int i=1; i<len; i++) {
if(array[i]<min) {
min=array[i];
}
}
}
void print_max(int array[], int len, int max) {
for (int i=1; i<len; i++) {
if (array[i]>max) {
max=array[i];
}
}
}
void sum(int array[], int len, int* x) {
for (int i=0; i<len; i++) {
*x = *x + array[i];
}
}
int main() {
int array[] = {9, 4, 7, 8, 10, 5, 1, 6, 3, 2};
int len = 10;
int min = array[0];
int max = array[0];
int summe = 0;
printf("Array: ");
print_array(array, len);
printf("\n");
print_min(array, len, min);
print_max(array, len, max);
printf("Minimum: %d\n", min);
printf("Maximum: %d\n", max);
sum(array, len, &summe);
printf("Summe: %d\n", summe);
return 0;
}
如果有人能告诉我我的错误在哪里解决它,那将非常有帮助。
我阅读了答案,然后更改了我的代码,但它不起作用。 我的新代码是:
#include <stdio.h>
#include <stdlib.h>
void print_array(int array[], int len) {
for (int i=0; i<len; i++) {
printf("%d", array[i]);
for (int i=0; i<1; i++) {
printf(", ");
}
}
}
int min (int array[], int len) {
for (int i=1; i<len; i++) {
if(array[i]<z) {
z=array[i];
}
}
return z;
}
int max(int array[], int len) {
for (int i=1; i<len; i++) {
if (array[i]>y) {
y=array[i];
}
}
return y;
}
void sum(int array[], int len, int* x) {
for (int i=0; i<len; i++) {
*x = *x + array[i];
}
}
int main() {
int array[] = {9, 4, 7, 8, 10, 5, 1, 6, 3, 2};
int len = 10;
int z=array[0];
int y=array[0];
int Minimum = 0;
int Maximum = 0;
int summe = 0;
printf("Array: ");
print_array(array, len);
printf("\n");
Minimum = min(array, len);
Maximum = max(array, len);
printf("Minimum: %d\n", Minimum);
printf("Maximum: %d\n", Maximum);
sum(array, len, &summe);
printf("Summe: %d\n", summe);
return 0;
}
我收到错误:“try.c:15:10: error: expected identifier or '(' int min (int array[], int len) {"
【问题讨论】:
-
您需要传递
min和max作为参考或从函数返回最小值/最大值然后使用它。 -
max和min是按值传递的,它们的变化在函数之外是不可见的。print_min/max也用词不当,因为它们没有打印任何东西。 -
你似乎喜欢 void 函数。
标签: c