Онлайн компилятор C

#include <stdio.h> int main() { int n; scanf("%d", &n); float i = 1, sum = 0, mul; do { mul = i * i; i = i + 0.1; sum = sum + mul; } while (i <= n); printf("%.1f", sum); return 0; }
这段代码试图计算从1开始,每次增加0.1,直到不超过n的每个数的平方和。但这里有一个关键问题:循环变量i是float类型,每次增加0.1,这会导致浮点数精度误差,可能使循环次数或最终结果不准确。

- 循环条件 `i <= n` 中,由于浮点数精度问题,当i接近n时可能无法正确终止,或者多循环一次。
- 题目可能要求i每次增加1(整数步长),而不是0.1。检查一下题目中步长是否应为1。