用于查找最大值和最低值及其数组索引的程序(C 编程)



如果需要的话,部分代码用于查找数组上的Greatest和Lowest数字。我现在需要索引。这些数字在该数组中的位置。

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#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º elementon",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;
}

如果您需要最大值的数组索引,请返回该索引而不是最大值。然后,如果需要,调用函数可以通过使用索引轻松打印值本身。顺便说一句,你的比较方式不对。

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
}

为了检索数组中最大值/最小值的值和索引,您需要保存最后一个索引i,您在函数中更改了该索引的最大值/最低值。

在C中,不能在一个函数中返回多个值。

实现这一点有多种方法。

一种解决方案是为函数提供一个指向整数的指针作为附加参数,在其中存储值的索引。

另一种解决方案是创建一个大小为2的简单数组来存储结果(最小/最大值)和相关索引,并将其用作maximominimo函数调用的参数。

或者,您甚至可以创建一个包含结果及其索引的结构。

最新更新