在线编译器 C

#include <stdio.h> int main() { int size; scanf("%d", &size); int s[size]; for (int i = 0; i < size; i++) { scanf("%d", &s[i]); } int max = s[0], min = s[0]; for (int i = 0; i < size; i++) { if (max < s[i]) { max = s[i]; } if (min > s[i]) { min = s[i]; } } int result; result = max - min; printf("%d", result); return 0; }
这段代码的功能是:先读取一个整数表示数组大小,然后读取相应数量的整数存入数组,接着找出数组中的最大值和最小值,最后输出它们的差值。

- 代码逻辑是正确的,但有一个潜在问题:当数组大小为0时,程序会出错。因为此时 `s[0]` 不存在,但代码直接用它初始化 `max` 和 `min`。你可以考虑在读取数组元素之前,先检查 `size` 是否大于0。
- 另外,`int s[size];` 使用了变长数组,这在C99标准中是允许的,但有些编译器可能不支持。如果遇到编译问题,可以考虑改用动态内存分配。