花辞树dor 2023-01-10 16:58 采纳率: 100%
浏览 25
已结题

【PTA-C语言】6-10 阶乘计算升级版 代码调试bug

题目来源

img

地址:https://pintia.cn/problem-sets/14/exam/problems/742
错误信息

img

img

思路地址:https://blog.csdn.net/DeskOneRice/article/details/128632266?spm=1001.2014.3001.5501
代码内容

void Print_Factorial(const int N)
{
    if (N < 0)
        printf("Invalid input");
    else if (N == 0)
        printf("1");
    else
    {
        int sum[100000]; //数组要足够大
        int weishu = 0;
        for (int n = N, i = 0; n != 0; n /= 10, i++)
            sum[i] = n % 10, weishu++;  //将N存入数组sum,作为和的初始值
        for (int n = N - 1; n != 1; n--)
        {
            int temp, up = 0;
            int weishu_temp = 0;
            for (int i = 0; i < weishu; i++)    //sum是几位数就乘几次
            {
                temp = sum[i] * n + up;
                sum[i] = temp % 10, weishu_temp++;
                up = temp / 10;
                if (up != 0 && i == weishu - 1) //最高位乘完还需要进位,另外考虑
                {
                    for (int j = 1; up != 0; up /= 10, j++)
                        sum[i + j] = up % 10, weishu_temp++;
                }
                if (i == weishu - 1)    //退出循环前,更新和的位数
                {
                    weishu = weishu_temp;
                    break;
                }
            }
        }
        for (int i = weishu - 1; i >= 0; i--)   //将和的各数字倒序输出
            printf("%d", sum[i]);
    }
    return;
}

img

问题:算的是18的阶乘,此处调试点是从18算到*14,仅仅少了一个j++,就出现了这种情况。数字没有超出整型范围,为什么前面出现了一串不明数字,还是负的?按理来说,在少了j++的情况下应该是 128160,求解答,非常感谢!

  • 写回答

1条回答 默认 最新

  • 花辞树dor 2023-01-10 17:36
    关注

    我懂了, j++ 少了,因为10是两位数,位数+2,但是始终只有 sum[i+j] (此处 j=1 不变)在变,相当于位数只+1,最后倒序输出时数组内多出的那一位数(即最高位)是随机值(数组未初始化,否则为0)。
    感谢浏览,已结题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月10日
  • 已采纳回答 1月10日
  • 创建了问题 1月10日

悬赏问题

  • ¥15 Pyqt 如何正确的关掉Qthread,并且释放其中的锁?
  • ¥30 网站服务器通过node.js部署了一个项目!前端访问失败
  • ¥15 WPS访问权限不足怎么解决
  • ¥15 java幂等控制问题
  • ¥15 海湾GST-DJ-N500
  • ¥15 氧化掩蔽层与注入条件关系
  • ¥15 Django DRF 如何反序列化得到Python对象类型数据
  • ¥15 多数据源与Hystrix的冲突
  • ¥15 如何在线硕士了解,广告太多,希望有真实接触过的人回答下?(标签-学习|关键词-在线硕士)
  • ¥15 zabbix6.4与frp如何进行联动