如果需要,可以在阵列上找到最大和最小数字的部分代码。 我现在需要索引。这个数字在该数组中的位置。
/////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ///////////////////////////////////////////
#include <stdio.h>
#include <stdlib.h>
#define DIM 5
void lerArray (int x[DIM]);
int maximo(int x[DIM]);
int minimo(int x[DIM]);
int main(){
int a[DIM],l,g;
lerArray(a);
g = maximo(a);
l = minimo(a);
printf("Minimo:%d \t Maximo:%d ",g,l);
return 0;
}
void lerArray (int x[DIM]){
int i,numb;
for(i=0;i<DIM;i++)
{
printf("Intoduza o %dº elemento\n",i);
scanf("%d",&numb);
x[i]= numb;
}
}
int maximo(int x[DIM]){
int i,max;
max =x[0];
for(i=0;i<DIM;i++){
if (max>x[i])
max = x[i];
}
return max;
}
int minimo(int x[DIM]){
int i,min;
min =x[0];
for(i=0;i<DIM;i++){
if(min<x[i])
min=x[i];
}
return min;
}
答案 0 :(得分:3)
如果需要最大值的数组索引,则返回该值而不是最大值。然后,如果需要,调用函数可以使用索引轻松打印值本身。顺便说一句,你的比较是错误的。
int maximo(int x[DIM]){
int i, max, maxind;
max =x[0];
maxind = 0; // added this
for(i=0;i<DIM;i++) {
if (max < x[i]) { // reversed the conditional test
max = x[i];
maxind = i; // remember this too
}
}
return maxind; // return the index instead of the value
}
答案 1 :(得分:0)
为了检索数组中最大值/最小值的值和索引,您需要保存最后一个索引i
,您可以从中更改函数中最大值/最小值的值。
在C中,您无法在函数中返回多个值。
有多种方法可以实现这一目标。
一种解决方案是将指向函数的整数的指针作为附加参数,在其中存储值的索引。
另一种解决方案是创建一个大小为2的简单数组来存储结果(最小/最大值)和相关索引,并将其用作maximo
和minimo
函数的参数调用
或者您甚至可以创建一个包含结果及其索引的结构。