在线编译器 C

#include <stdio.h> int main() { int sum=0,n,i; scanf("%d",&n); for(i=1;i<=n;i++); sum=i*i+i*i*i; printf("%d",sum); return 0; }
这段代码试图计算从1到n的每个数的平方与立方之和,但存在逻辑错误。

- 循环语句 `for(i=1;i<=n;i++);` 末尾的分号导致循环体为空,循环结束后 `i` 的值变为 `n+1`,然后只计算了 `(n+1)^2 + (n+1)^3` 这一个值。
- 变量 `sum` 初始化为0,但循环内没有累加操作,最终结果只包含一个项。

- 检查循环语句末尾的分号,它让循环体变成了空语句。
- 思考如何在循环体内对每个 `i` 的平方和立方进行累加,而不是在循环结束后只计算一次。