如何在C语言代码中累加变量c的值以实现阶乘计算?
C语言阶乘实现修正
你的代码核心问题是没搞清楚阶乘的累乘逻辑,以及循环条件和变量初始化的错误,下面是修正方案:
问题分析
- 阶乘是从1到目标数的连续乘积(比如
5! = 1×2×3×4×5),但你当前代码每次计算b*a,完全不符合阶乘逻辑 - 变量
c未初始化,累乘需要从1开始初始化 - 循环条件
b < a会导致少乘一次目标数a(比如a=5时,b只会到4) - 循环内每次打印
c会输出中间乘积,而不是最终的阶乘结果
修正后的代码
#include <stdio.h> int main() { int a, b = 1; // 初始化c为1,因为累乘的初始值是1(任何数乘1不改变结果) int c = 1; printf("Value of a:"); scanf("%d", &a); // 循环条件改为b <= a,确保乘到目标数本身 while (b <= a) { // 累乘:把当前c的值乘以b,再赋值给c c *= b; b++; } // 循环结束后打印最终阶乘结果 printf("%d! = %d\n", a, c); return 0; }
额外说明
- 如果要处理0的情况,需要加个判断:当
a == 0时直接输出0! = 1,因为数学上0的阶乘是1 - 如果目标数较大(比如超过12),
int类型会溢出,此时需要改用long long类型存储结果
内容的提问来源于stack exchange,提问作者Buzz Lightyear
相关产品推荐
相关产品推荐

