这段代码试图从输入中读取一系列整数,计算它们的平均值并保留两位小数输出。但存在一个关键问题:循环条件判断有误。
- 循环条件 `scanf("%lld",&c)!=0` 是错误的。`scanf` 成功读取一个整数时返回1,读取失败(如遇到非数字字符或文件结束)时返回0或EOF。正确的判断应该是 `==1` 而不是 `!=0`。当前写法会在读取失败时继续循环,导致错误计算。
- 变量 `i` 被声明为 `double` 类型,但用于计数,更适合用整数类型(如 `int` 或 `long long`)。虽然不影响功能,但不够清晰。
提示:
- 检查循环条件:`scanf` 成功读取一个整数时返回值是什么?失败时返回值又是什么?你的条件 `!=0` 在哪些情况下会错误地继续循环?
- 考虑输入结束时(比如按下 Ctrl+D 或 Ctrl+Z)`scanf` 会返回什么值?这个值是否等于0?