[英]How to find position of an element in array (C programming)
我有一个函数,要求用户将 10 个整数输入一个数组,然后找到数组的最大值。
int largestPos(int array[], int size, int index) {
int k, maxVal = 0;
printf("Enter a starting index: ");
scanf("%d", &index);
for (k = index; k < size; k++){
if (maxVal < array[k]){
maxVal = array[k];
}
}
printf("The maximum value is %d at position %d \n", maxVal, array[maxVal]);
return 0;
}
最大值计算正确。 但是当我试图找到最大值的位置时,我得到了一个疯狂的数字。 我找到最大值位置的方式有什么问题?
int maxPos=0;
for (k = index; k < size; k++){
if (maxVal < array[k]){
maxVal = array[k];
maxPos = k;
}
}
printf("The maximum value is %d at position %d \n",
maxVal, maxPos);
如果所有整数都大于零,以下只会找到最大值。 如果它们都是负整数,那么这里的最大值将为 0。
int array[5] = {-234, -133, -581, -8, -41};
int maxVal = 0;
for(i = 0; i < size; ++i) {
if(array[i] > maxVal) {
maxVal = array[i];
}
}
相反,您想用数组中的第一个元素初始化 maxVal,然后将所有其他元素与其进行比较(跳过 for 循环中的第一个元素,这样您就不会将 maxVal 与其自身进行比较)。 这将在索引 3 处给出 -8 的最大值。
int array[5] = {-234, -133, -581, -8, -41};
// initialize maxVal to first element inside the array
int maxVal = array[0];
int pos = 0;
for(i = 1; i < size; ++i) {
if(array[i] > maxVal) {
maxVal = array[i];
// Find the index of the max value
pos = i;
}
}
想象一下你有这个数组:{100 , 99 , 98 , 97 , 96 , 95 , 94 , 93 , 92 , 91 , 90}, 最大值是 100. 你的代码试图打印 array[maxValue] 所以 array[100] .
也许您不应该将值保存到 maxValue 中,而应该保存正确的位置
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.