许思王 2023-02-18 17:38 采纳率: 33.3%
浏览 47
已结题

这个代码的问题在哪?

img

#include<stdio.h>
#include<stdlib.h>
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

  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2023-02-18 17:55
    关注

    你得输入完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;
    }
     
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月26日
  • 已采纳回答 2月18日
  • 创建了问题 2月18日