在线编译器 C

#include <stdio.h> int main() { int n; scanf("%d", &n); int num, max, min; scanf("%d", &num); max = num; min = num; for (int i = 1; i < n; i++) { scanf("%d", &num); if (num > max) { max = num; } if (num < min) { min = num; } } int result = max - min; printf("%d", result); return 0; }
这段代码的功能是:从用户输入中读取一个整数 n,然后读取 n 个整数,找出这 n 个数中的最大值和最小值,最后输出它们的差值。

代码整体逻辑是正确的,但有一个潜在问题需要注意。

- 当 n 为 0 或负数时,程序会尝试读取第一个数并赋值给 max 和 min,但此时实际上没有有效输入,会导致未定义行为。可以考虑在读取 n 后检查 n 是否大于 0。
- 如果 n 为 1,程序也能正确运行,因为只有一个数时最大值和最小值相同,差值为 0。