从最小值和最大值中查找 ID 号的问题

Problem to find ID number from min & max values

所以我试图制作一个简单的程序来读取值和 ID 号的整数,因此输出将是值的最小最大值及其 maxID minID 号。输入文件的第一个整数将指示将在循环中读取多少个输入。我的程序编译没有任何问题,最小最大输出是正确的,但是 ID 号的输出是错误的。谁能帮我诊断这个问题?对不起,我的愚蠢问题,我是编程新手。谢谢

#include <stdio.h>

int main(){

int val[100],id[100];
int i, max, min, size, idmax, idmin,minindex,maxindex;

printf("Enter how many IDs: ");
scanf("%d", &size);

printf("Enter ID numbers and values:\n");
for(i=0; i<size; i++)
{
    scanf("%d %d", &id[i], &val[i]);
}


max = min = val[0];

for(i=1; i<size; i++)
{
    if(val[i] > max)
    {
        max = val[i];
        maxindex = i;
        for(i=0;i<size;i++){
          if(id[i]==maxindex){
            idmax=id[i];
          }
        }
      }

    if(val[i] < min)
    {
        min = val[i];
        minindex = i;
        for(i=0;i<size;i++){
          if(id[i]==minindex){
            idmin=id[i];
          }
        }
    }
}

printf("Max number = %d with ID number = %d\n", max, idmax);
printf("Min number = %d with ID number = %d\n", min, idmin);

return 0;

}

你让问题变得比实际情况更复杂。当 运行 通过 ;list 时,只要更新相应的 maxmin:

,就可以简单地更新 idmaxidmin
#include <stdio.h>

int main() {

    int val[100], id[100];
    int i, max, min, size, idmax, idmin;/// No longer need these: minindex, maxindex;

    printf("Enter how many IDs: ");
    scanf("%d", &size);

    printf("Enter ID numbers and values:\n");
    for (i = 0; i < size; i++) {
        scanf("%d %d", &id[i], &val[i]);
    }

    max = min = val[0];
    idmin = idmax = id[0];/// Initialize IDs similarly to min and max

    for (i = 1; i < size; i++) {
        if (val[i] > max) {
            max = val[i];
            idmax = id[i];/// Only need to change this when max changes
        }
        if (val[i] < min) {
            min = val[i];
            idmin = id[i];/// Only need to change this when min changes
        }
    }

    printf("Max number = %d with ID number = %d\n", max, idmax);
    printf("Min number = %d with ID number = %d\n", min, idmin);

    return 0;
}