这个代码的问题在哪?

img

#include
#include
int main()
{
    int i,j, n = 0;
    int m, l, r, c;//操作次数  开始  结尾  加数
    int* p = (int*)malloc(n * sizeof(int));
    scanf("%d %d", &n,&m);
    for (i = 0;i < n;i++)
    {
        scanf("%d",  (p + i));
    }
    for (j = 0;j < m;j++)
    {
        scanf("%d %d %d", &l, &r, &c);
        for (i = l;i <= r;i++)
        {
            *(p + i -1) += c;
        }
    }
    for (i = 0;i < n;i++)
        printf("%d ", *(p + i));
    free(p);
    return 0;
}

img

你得输入完n后再分配空间啊,否则n是个野值

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int i,j, n = 0;
    int m, l, r, c;//操作次数  开始  结尾  加数
    scanf("%d %d", &n,&m);
    int* p = (int*)malloc(n * sizeof(int));
    for (i = 0;i < n;i++)
    {
        scanf("%d",  (p + i));
    }
    for (j = 0;j < m;j++)
    {
        scanf("%d %d %d", &l, &r, &c);
        for (i = l;i <= r;i++)
        {
            *(p + i -1) += c;
        }
    }
    for (i = 0;i < n;i++)
        printf("%d ", *(p + i));
    free(p);
    return 0;
}