这段代码试图从输入中读取字符,直到遇到句点,然后计算字符的平均值并输出。但代码中存在几个问题。
- 在 while 循环条件中,`c=getchar()!="."` 是错误的。`getchar()` 返回的是 int 类型的字符编码,而 `"."` 是一个字符串字面量,不能直接与字符比较。应该用单引号 `'.'` 来比较字符。
- 循环内部又调用了 `scanf("%c",&c);`,这会覆盖之前读取的字符,导致第一个字符被丢弃,并且可能造成输入读取混乱。应该只使用一次读取操作。
- `sum=sum+c` 将字符的 ASCII 码值累加,但字符的 ASCII 码值可能很大,用 `long long` 存储没问题,但最终的平均值计算 `average=sum/i` 是整数除法,会丢失小数部分。如果希望得到更精确的平均值,需要考虑浮点数。
- 变量 `i` 在循环中递增,但注意循环条件中的 `getchar()` 读取的字符并没有被计入 `sum` 和 `i`,因为循环体内又用 `scanf` 重新读取了。
提示:
- 检查 while 循环条件中的比较操作,确保用正确的语法比较字符。
- 思考循环体内是否需要再次调用 `scanf`,以及如何正确累加每个读取到的字符。