在线编译器 C

#include <stdio.h> int main() { int n; scanf("%d",&n); int arr[100]; int sum,max,min; scanf("%d",&sum); min=max=sum; for(int i=0;i<n;i++) { if(arr[i]<min) min=arr[i]; if(arr[i]>max) max=arr[i]; } printf("%d",max-min); return 0; }
这段代码试图计算一组数字中最大值与最小值的差,但存在几个问题。

首先,代码只读取了一个数字作为第一个元素,然后试图用循环处理数组 `arr`,但数组 `arr` 并没有被正确填充数据。循环中比较的是未初始化的数组元素,这会导致错误的结果。

- 你需要在循环之前或循环内部读取所有 `n` 个数字,并将它们存入数组 `arr` 中。目前只读取了一个数字到 `sum` 中,但 `sum` 并没有被用于数组。
- 循环条件 `i < n` 是正确的,但循环体内部没有读取新数据,所以数组元素都是未定义的。你应该在循环中每次读取一个数字并存入 `arr[i]`,同时更新 `min` 和 `max`。