Online Compiler C

#include <math.h> #include <stdio.h> int main() { int n, times; scanf("%d", &n); float i = 1, sum = 0, mul; times = (n-1)*10; while (times>0) { mul = i * i; sum = sum + mul; i = i + 0.1; times--; } printf("%.1f", sum); return 0; }
这段代码试图计算从1开始,每次增加0.1,共(n-1)*10个数的平方和。但代码存在逻辑错误。

- 循环次数 `times = (n-1)*10` 的设定方式不对。如果输入n=1,times=0,循环不执行,输出0,但实际应该输出1的平方。如果输入n=2,times=10,循环从i=1开始,每次加0.1,共10次,最后i=2,但平方和只加到1.9的平方,缺少2.0的平方。这说明循环次数少了一次,且起始值或结束条件有偏差。

- 变量类型使用float可能导致精度误差累积,影响最终结果。