#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;
}

这个代码的问题在哪?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用