Online Compiler C

#include <stdio.h> int main() { int n, sum = 0, mul, cube; scanf("%d", &n); while (n > 0) { mul = n * n; cube = n * n * n; n = n - 1; sum = sum + mul + cube; } printf("%d", sum); return 0; }
这段代码的功能是:读入一个整数 n,然后计算从 1 到 n 每个数的平方与立方之和,最后输出总和。

代码逻辑上有一个问题:循环从 n 开始向下递减,但题目可能要求从 1 到 n 的正向累加。虽然递减也能得到相同结果,但需要注意 mul 和 cube 的计算顺序——当前代码在 n 递减前计算了当前 n 的平方和立方,所以实际上计算的是 n, n-1, ..., 1 的平方和立方,结果正确。

- 检查变量 mul 和 cube 是否真的需要,能否直接用表达式简化?
- 思考如果 n 是负数或零,程序会输出什么?是否需要处理这种情况?