Онлайн компилятор C

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

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

- 在计算平均值时,`(double)sum/N` 的写法是正确的,因为 `sum` 是整数,`N` 是整数常量,强制转换 `sum` 为 `double` 可以避免整数除法。

- 代码没有检查 `scanf` 的返回值,如果输入不是整数,程序可能产生意外结果。不过对于基础练习,这不是主要问题。

- 变量 `avg` 被声明为 `double`,但输出时使用了 `%.2f`,这是正确的格式。

- 代码没有处理输入可能不足12个数的情况,但题目要求固定12个数,所以没问题。

- 一个值得思考的点:如果用户输入的数字很大,`sum` 是否会溢出?`int` 类型通常能存储大约21亿,12个数的和一般不会超过这个范围,但你可以考虑是否需要用更大的类型。