Online Compiler C

#include <stdio.h> int main() { int n; scanf("%d", &n); float i = 1, sum = 0, mul; for (i = 1; i += 0.1; i < n) { mul = i * i; sum = sum + mul; } printf("%.1f", sum); return 0; }
这段代码试图计算一个数列的和,但循环的逻辑有错误。

- 循环条件 `i += 0.1` 写在中间,这会导致每次循环先执行 `i += 0.1`,再判断 `i < n`,而且 `i` 的初始值被重新赋值为1,循环控制混乱。
- 变量 `i` 被声明为 `float`,但循环中 `i += 0.1` 的步长可能因浮点精度导致不精确的累加。

- 检查循环的三个部分:初始化、条件、更新。当前写法把更新放到了条件位置,条件放到了最后,顺序不对。
- 思考浮点数循环的常见问题:用整数循环再转换为浮点数,可以避免精度误差。