Онлайн компилятор C

#include<stdio.h> int main() { int a,b,c,d; int arr[10]; int i; for(i=0;i<10;i++) { scanf("%d",&arr[i]); } a=arr[0]; b=arr[0]; c=0; d=0; for(i=0;i<10;i++) { if(a<arr[i]){ a=arr[i]; c=1+i; } if(b>arr[i]){ b=arr[i]; d=1+i; } } printf("%d %d %d %d",a,b,c,d); return 0; }
这段代码的功能是:读入10个整数,找出其中的最大值和最小值,并记录它们的位置(从1开始计数),最后输出这四个值。

代码逻辑基本正确,但有一个潜在问题需要注意:

- 当数组中有多个相同的最大值或最小值时,你的代码只会记录最后一个出现的位置,因为每次遇到相等或更大的值都会更新位置。这可能是你期望的行为,也可能不是,取决于题目要求。

另外,关于变量命名和初始化:

- 变量c和d分别用来记录最大值和最小值的位置,但初始值设为0。如果数组的第一个元素就是最大值或最小值,位置会被正确记录为1。但如果数组为空(这里不会发生),或者你希望位置从0开始计数,需要调整。目前从1开始计数的做法是合理的。