C语言实现1至14阶乘输出异常,请求错误排查
阶乘代码错误分析与修正
错误原因
- 循环起始值与计算顺序问题:你的循环从
i=0开始,第一次执行factor = factor * i时,1 * 0直接将factor置为0。后续所有循环中,0乘以任何数结果都是0,导致从1开始的阶乘输出全部异常。 - 输出格式不够合理:用
%f输出整数阶乘会显示为带小数的形式,比如1!会显示成1.000000,换成%.0f可以输出纯整数格式,更符合阶乘的预期展示。
修正后的代码(计算1~14的阶乘)
#include <stdio.h> int main() { int i, bounds = 14; double factor = 1; for(i = 1; i <= bounds; i++){ factor *= i; printf("%d %.0f\n", i, factor); } return 0; }
补充:如果需要包含0!(数学上0!等于1)
可以调整计算与输出的顺序,先输出当前阶乘再计算下一个:
#include <stdio.h> int main() { int i, bounds = 14; double factor = 1; for(i = 0; i <= bounds; i++){ printf("%d %.0f\n", i, factor); factor *= (i + 1); } return 0; }
内容的提问来源于stack exchange,提问作者Taz
相关产品推荐
相关产品推荐

