Online Compiler C

#include <stdio.h> int main() { int n; scanf("%d", &n); float sum = 0.0; for (float i = 1; i <= n; i += 0.1) { sum = sum + i * i; } printf("%.1f", sum); return 0; }
这段代码试图计算从1开始,步长为0.1,直到n的每个数的平方和。但循环变量使用浮点数,并且步长0.1在二进制中无法精确表示,会导致循环次数不准确或无法正确终止。

- 循环变量i从1开始,每次增加0.1,但浮点数运算的累积误差可能使i永远达不到n,或者多执行或少执行一次。
- 题目可能要求计算的是整数1到n的平方和,而不是带小数的步长。请检查题目是否要求步长为1的整数序列。