Online Compiler C

#include <stdio.h> int main() { long long c,average=0,sum=0,i=0; while ((c=getchar())!='.'){ sum=sum+c; i++; } average=sum/i; printf("%lld",average); return 0; }
这段代码试图从输入中读取字符直到遇到句点,然后计算所有字符的ASCII码平均值并输出。但存在几个问题。

- 变量`c`被声明为`long long`类型,但`getchar()`返回的是`int`类型,这可能导致意外的行为。更重要的是,`getchar()`读取的是字符的ASCII码值,而不是数字本身。例如输入"123.",你实际上在累加字符'1'、'2'、'3'的ASCII码(49、50、51),而不是数字1、2、3。

- 平均值计算使用了整数除法,会丢失小数部分。如果希望得到精确的平均值,应该使用浮点数类型。