Online Compiler C

#include <stdio.h> int main() { const int n = 5; int arr[n]; int sum = 0; for (int i = 0; i < n; i++) { scanf("%d", &arr[i]); sum += arr[i]; } double average = (double)sum / n; printf("%.3f\n", average); return 0; }
这段代码的功能是:读取5个整数,计算它们的平均值,并保留三位小数输出。

- 代码中 `sum` 是 `int` 类型,当计算平均值时,虽然使用了 `(double)` 强制转换,但 `sum` 本身可能溢出。如果输入的整数较大(例如接近 `INT_MAX`),累加结果可能超出 `int` 范围,导致错误。
- 变量 `average` 是 `double` 类型,但 `sum` 和 `n` 都是整数,除法运算前需要确保至少一个操作数为浮点数。当前写法 `(double)sum / n` 是正确的,但需要注意 `sum` 的类型问题。