Online Compiler C

#include <stdio.h> int main() { long long c,average=0,sum=0,i=0; while ((c=getchar())!='.'){ sum=sum+c-'0'; i++; } average=sum/i; printf("%lld",average); return 0; }
这段代码试图计算输入数字的平均值,但存在几个问题。

代码从输入中读取字符,直到遇到句点 '.',将每个数字字符转换为对应的整数值(通过减去 '0'),累加求和并计数,最后输出平均值。但平均值计算使用了整数除法,会丢失小数部分。

- 整数除法 `sum/i` 会截断小数部分,导致结果不准确。例如输入 "123.",实际平均值为2,但代码会输出2,而正确结果应为2.0。如果需要小数结果,应考虑使用浮点数类型。
- 变量 `c` 被声明为 `long long`,但 `getchar()` 返回的是 `int` 类型,虽然可以工作,但通常应使用 `int` 类型来存储字符。