You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C语言代码中累加变量c的值以实现阶乘计算?

C语言阶乘实现修正

你的代码核心问题是没搞清楚阶乘的累乘逻辑,以及循环条件和变量初始化的错误,下面是修正方案:

问题分析

  1. 阶乘是从1到目标数的连续乘积(比如5! = 1×2×3×4×5),但你当前代码每次计算b*a,完全不符合阶乘逻辑
  2. 变量c未初始化,累乘需要从1开始初始化
  3. 循环条件b < a会导致少乘一次目标数a(比如a=5时,b只会到4)
  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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 08:01:20