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

#include <stdio.h> int main() { int n; scanf("%d",&n); float sum=0; for(int i=1;i<n;i+=0.1){ sum+=i*i; } printf("%.1f",sum); }
这段代码试图计算从1开始到n之间每隔0.1取一个数的平方和,但存在几个问题。

- 循环变量 `i` 是 `int` 类型,但 `i+=0.1` 会导致每次循环只增加0(因为整数加法会丢弃小数部分),造成死循环。
- 循环条件 `i<n` 中 `i` 是整数,`n` 也是整数,但步长0.1无法精确表示,且整数变量无法存储小数增量。

- 考虑将循环变量改为 `float` 或 `double` 类型,并注意浮点数比较的精度问题。
- 思考如何用整数循环来模拟每隔0.1的步长,例如用循环次数乘以0.1来得到当前值。