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

如何修复C语言阶乘计算程序以实现教授要求的指定输出格式

代码问题排查&修正方案

存在的问题

  • 变量fact未初始化,默认是内存随机值,计算阶乘前必须将其赋值为1
  • 循环内部错误修改了用户输入的n值,n = n * (n-1)这行完全多余,会导致循环条件i <= n逻辑混乱,甚至出现死循环
  • printf输出时错误使用了取地址符&,&n、&fact取的是变量的内存地址,不是变量存储的值,输出结果完全不符合预期
  • 输出格式完全不匹配教授要求,没有打印n!=乘数序列=结果的结构,也没有输出中间的每一步乘数
  • 引入了完全没用的<iostream>头文件,这是C++的输入输出头,纯C代码不需要包含

修正后可运行代码

#include <stdio.h>

int main() {
    int n, i, fact = 1;
    printf("Enter a positive integer: \n");
    scanf("%d", &n);
    if (n < 0) {
        printf("Error! Factorial of a negative number doesn't exist.");
    } else if (n == 0) {
        // 0的阶乘是约定值1,做特殊兼容处理
        printf("0!=1");
    } else {
        // 先输出格式开头
        printf("%d!=", n);
        for(i = 1; i <= n; ++i) {
            fact *= i;
            // 控制乘数输出格式,最后一个乘数后不加*
            if (i == n) {
                printf("%d", i);
            } else {
                printf("%d*", i);
            }
        }
        // 输出最终阶乘结果
        printf("=%d", fact);
    }
    return 0;
}

内容的提问来源于stack exchange,提问作者misfit101

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:27:03