Online Compiler C

#include <stdio.h> int main() { int n, res=1; scanf("%d", &n); while(n>0){ res=res*n; n--; } printf("%d",res); return 0; }
这段代码计算一个整数的阶乘。它从用户输入一个数n,然后通过循环将res乘以n、n-1、n-2……直到1,最后输出结果。

- 代码没有处理n为0的情况。按照阶乘定义,0的阶乘应该是1,但你的循环条件n>0在n=0时不会执行,res保持初始值1,结果正确。但需要思考:如果输入负数呢?循环条件n>0不成立,直接输出1,这不符合数学定义。考虑如何让程序对负数给出合理提示或处理。
- 变量res是int类型,阶乘增长很快,当n较大时(比如n=13),结果会超出int范围导致溢出。可以思考如何检测或避免这个问题。