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

MacBook Air M1上C代码执行终止于阶乘模块的问题求助

程序执行到阶乘模块后终止?问题出在return语句的位置!

这根本不是硬件问题,完全是代码逻辑错误导致的:

  1. 核心问题:提前return终止了程序
    你在第8个模块(阶乘计算)里,把return 0;写在了打印Fim fatorial的语句之前,而且后面的第9、10模块也各自加了return 0;。一旦执行到return 0;,整个main函数会立即结束,后续所有代码都不会被执行。

  2. 修复步骤

    • 删掉第8、9、10模块里的所有return 0;,只在整个main函数的最后保留一个return 0;。
    • 阶乘计算用int类型容易溢出(比如13的阶乘就超出int的取值范围了),建议把fatorial改成long long类型,对应的printf格式符改成%lld:
      long long fatorial = 1;
      // ...
      printf("O fatorial de %d é: %lld\n", numero, fatorial);
      
    • 第9模块里的scanf("%hd", &numeroSeis);格式符错误,numeroSeis是int类型,应该用%d而非%hd(%hd对应short类型)。
  3. 修改后的关键代码示例
    调整后的第8模块:

    // Inicio 8)
    printf("\n--------------------- Inicio fatorial ----------------------\n");
    int numero;
    
    printf("Digite um número para calcular o fatorial: ");
    scanf("%d", &numero);
    
    long long fatorial = 1;
    
    for (int i = 1; i <= numero; i++) {
        fatorial *= i;
    }
    
    printf("O fatorial de %d é: %lld\n", numero, fatorial);
    
    printf("\n----------------------- Fim fatorial ------------------------\n");
    // Fim 8)
    

    然后在整个main函数的最后(第10模块结束后)添加:

    return 0;
    

调整完这些,程序就能完整执行所有模块了,和你的M1硬件没有任何关系。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 09:35:53