C语言 插入较大数字时程序崩溃

q7solyqu  于 2023-01-20  发布在  其他
关注(0)|答案(1)|浏览(206)

我在网上解决一个问题。我已经写好了代码,除了我输入比平常大的数字(1000到2000)外,大部分时间都能正常工作。当我这样做时,程序崩溃并返回一个非常小的负数。可能是什么原因导致的呢?
Here是问题的链接。

#include <stdio.h>
#include <stdlib.h>

int main() {
    int z, T;
    scanf("%d", &T);
    for (z = 0; z < T; z++) {
        int i, j, N, P;
        scanf("%d%d", &N, &P);
        int days[3651] = { 0 };
        int hartal[10];
        int count = 0;

        for (i = 0; i < P; i++) {
            scanf("%d", &hartal[i]);
        }

        for (i = 1; i < N + 1; i++) {
            days[6] = 2;
            days[6 + (i * 7)] = 2;
            days[7] = 2;
            days[7 + (i * 7)] = 2;
        }

        for (i = 0; i < P; i++) {
            int a = hartal[i];
            for (j = 0; j < N + 1; j++) {
                if (j % a == 0 && days[j] != 2) {
                    days[j] = 1;
                }
            }
        }

        for (i = 1; i < N + 1; i++) {
            if (days[i] == 1) {
                count++;
            }
        }

        printf("%\n%d\n", count);
    }
    return 0;
}
jyztefdp

jyztefdp1#

days[6+(i*7)] = 2;

i〉520时,这行代码可能是一个越界访问(也就是你试图访问数组days边界之外的索引)。

相关问题