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

【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 Python3.5 相关代码写作
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)