Online Compiler C

#include <stdio.h> int main() { int n; // 1. 用 &n 告诉服务员把输入的数字放进 n 的房间里 if (scanf("%d", &n) != 1) { return 0; } int result = 1; // 乘法初始化为 1 // 2. 用循环从 1 一直乘到 n for (int i = 1; i <= n; i++) { result *= i; // 相当于 result = result * i; } // 3. 打印最终结果,并用 \n 换行 printf("%d\n", result); return 0; }
这段代码计算的是输入整数 n 的阶乘(n!),即从 1 乘到 n 的乘积。代码逻辑基本正确,但有一个潜在问题需要注意。

- 当 n 较大时,int 类型可能无法容纳阶乘的结果,导致溢出。例如 n=13 时结果已经超过 21 亿,超出 int 的范围。
- 如果 n 为 0,按照数学定义 0! = 1,你的代码中循环不会执行,result 保持为 1,这是正确的。但可以思考一下循环条件是否覆盖了所有情况。