[英]Trying to find the maximum term in an array using C
我试图编写一个程序,可以通过使用maxterm函数找到最大的数组。
基本上你告诉程序你要在数组中放入多少个数字,放入每个数字,它会告诉你最大的数字。
该程序适用于大小为4或更小的数组,但只要数组长度超过4,返回的最大值就不正确:它总是一个大数,甚至不是数组的一部分。
例如:
Please enter the number of data values: 4
enter value 1: 1
enter value 2: 3
enter value 3: 4
enter value 4: 1
the maximum term is 4
但:
Please enter the number of data values: 5
enter value 1: 1
enter value 2: 3
enter value 3: 8
enter value 4: 4
enter value 5: 2
the maximum term is 32767
这是我的代码:
#include <stdio.h>
int maxterm(int *numbers, int *size) {
int index = 0;
int max = numbers[0];
for (index = 0 ; index < *size ; index++) {
if (max < numbers[index+1]) {
max = numbers[index+1];
}
}
return max;
}
int main(int argc, const char * argv[]) {
int num, index;
printf(" Please enter the number of data values: ");
scanf("%d", &num); //user enters in the length of the number list
int array[num];
for (index = 0 ; index < num ; index++) {
printf("Please enter in value %i: ", (index + 1));
scanf("%i", &array[index]); //list is created number by number
}
int maxi = maxterm(array, &num); //the highest number in the list is then determined using the maxterm function.
printf("the maximum term is %i", maxi);
return 0;
}
我的错误在哪里?
你在这里出界:
for (index = 0 ; index < *size ; index++) {
if (max < numbers[index+1]) {
max = numbers[index+1];
}
}
而是正常迭代,除了从第二个元素开始。
您正在访问数组越界,所以你看到这个问题。 通过值看起来很适合此API。
int maxterm(int *numbers, int size) {
int index = 0;
int max = numbers[0];
for (index = 0 ; index < size ; index++) {
if (max < numbers[index]) {
max = numbers[index];
}
}
return max;
}
电话应该是:
int maxi = maxterm(array, num);
你的代码是完美的。 在max函数中用i替换i + 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.