pat C++ 代码段错误

问题遇到的现象和发生背景

在pat 1005 继续(3n+1)猜想 (25 分)中,在测试点3和测试点4发生段错误。

问题相关代码,请勿粘贴截图
#include <iostream>
using namespace std;
#include <algorithm>

bool cmp(int a, int b) {
    return a > b;
}

int arr[120];
int num[120];

int main() {
    int k = 0;
    cin >> k;
    int u = k;
    int n = 0, i = 0;
    while (u--) {
        cin >> n;
        num[i++] = n;
        while (n != 1) {
            if (n % 2) {
                n = (3 * n + 1) / 2;
            }
            else {
                n /= 2;
            }
            arr[n]++;
        }
    }
    
    sort(num, num + k, cmp);
    
    int flag = 0;
    for (int j = 0; j < k; j++) {
        if (arr[num[j]] == 0) {
            if (flag == 0) {
                flag = 1;
            }
            else {
                cout << " ";
            }
            cout << num[j];
        }
    }
    return 0;
}

运行结果及报错内容

运行结果:

7 6

int arr[120]; arr数组长度设置的太小了

改成 int arr[10000];

img

arr数组没有初始化为0

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632