Online Compiler C

#include <stdio.h> int main() { int n; scanf("%d",&n); int a[100]; int min,max; scanf("%d",&a[0]); max=min=a[0]; for(int i=1;i<n;i++){ scanf("%d",&a[i]); if(a[i]>max) max=a[i]; if(a[i]<min) min=a[i]; } printf("%d\n",max-min); return 0; }
这段代码的功能是:先读入一个整数 n,然后读入 n 个整数存入数组,最后输出这 n 个数中最大值与最小值的差。

代码整体思路正确,但有一个潜在问题:如果用户输入的 n 大于 100,数组 a 的大小只有 100,会导致数组越界。

- 检查数组大小是否足够容纳用户输入的 n 个整数。如果 n 可能超过 100,需要调整数组大小或改用动态分配。
- 另外,当 n 为 0 或负数时,程序行为未定义,可以考虑增加对 n 合法性的判断。