c - 当我插入较大的数字时程序崩溃

标签 c

我正在在线解决问题。我已经编写了代码,并且它在大多数情况下都有效,除了当我输入比平常大的数字(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;
}

最佳答案

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

该行代码可能是越界访问。 (也就是说,您将尝试访问数组天数范围之外的索引。)当 i > 520 时。

关于c - 当我插入较大的数字时程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59490675/

相关文章:

c++ - gcc - 使用 #pragma 将 __attribute__((section (".dflash_code"))) 应用于整个源文件

C - 用于执行代码的数组地址

c - 在结构中声明结构?

c - 如何用已有的数字随机补全 Matrix[4][4]?

c - fseek 与 SEEK_CUR 问题

C - 包含整数和字符串的文件(除法问题)

c - C语言中如何将一个字符串插入到另一个字符串中

c - 在 c 中查找素数,如果不做它的工作

c - C 扩展中的 unicode 字符串

c - 回文程序,让用户选择是否要再次执行代码或不使用 do while