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

时间:2015-11-26 00:23:58

标签: c arrays

如果需要,可以在阵列上找到最大和最小数字的部分代码。 我现在需要索引。这个数字在该数组中的位置。

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

#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;
}

2 个答案:

答案 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的简单数组来存储结果(最小/最大值)和相关索引,并将其用作maximominimo函数的参数调用

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