Online Compiler C

#include <stdio.h> int main() { int a[10]; int min; for(int d=0;d<10;d++){scanf("%d",&a[d]);} min=a[0]; for(int d=1;d<10;d++){if (a[d]<min){min=a[d];}} int e=d+1; int b[10]; int max; for(int i=0;i<10;i++){scanf("%d",&b[i]);} max=b[0]; for(int i=1;i<10;i++){if (b[i]>max){max=b[i];}} int f=i+1; printf("%d""%d""%d""%d",max,f,min,e); return 0; }
这段代码的功能是:读取两个数组(各10个整数),分别找出第一个数组的最小值和第二个数组的最大值,然后输出最大值、最大值位置、最小值、最小值位置。但代码中存在几个问题。

- 变量 `d` 和 `i` 在循环结束后仍然存在,但它们的值是循环结束时的值(即10),而不是最小值或最大值所在的位置。你试图用 `d+1` 和 `i+1` 来得到位置,但这样得到的是固定值11,而不是实际的最小值或最大值的位置。

- 你没有记录最小值或最大值在数组中的下标(索引)。在循环中,当更新 `min` 或 `max` 时,应该同时记录当时的循环变量值,这样才能得到正确的位置。