输入一个正整数n(1<n≤10),再输入n个整数,其间以空格分隔,计算并输出这n个整数的和。要求使用动态内存分配方法为这n个整数分配空间。 # include <stdio.h> # include <stdlib.h> int main() { int i, n, sum; int *p; scanf("%d", &n); if ( ) { printf("Not able to allocate memory. \n"); exit(1); } for (i = 0; i < n; i++){ ; } sum = 0; for (i = 0; i < n; i++) { sum = sum + ; } printf("%d\n",sum); free(p) ; return 0; }
时间: 2023-12-03 16:43:35 浏览: 137
请尝试按照以下方法修改代码:
```
#include <stdio.h>
#include <stdlib.h>
int main() {
int i, n, sum;
int *p;
scanf("%d", &n);
// 动态分配内存
p = (int*) malloc(n * sizeof(int));
if (p == NULL) {
printf("Not able to allocate memory. \n");
exit(1);
}
// 输入n个整数
for (i = 0; i < n; i++) {
scanf("%d", p+i);
}
// 计算和
sum = 0;
for (i = 0; i < n; i++) {
sum = sum + *(p+i);
}
printf("%d\n", sum);
// 释放动态分配的内存
free(p);
return 0;
}
```
在这个代码中,我们首先使用 `malloc` 函数动态分配了一个大小为 `n*sizeof(int)` 的整型数组,并将其地址赋给指针变量 `p`。如果分配失败,程序会输出错误信息并退出。接着,我们使用循环输入了这 `n` 个整数。最后,计算出它们的和并输出。最后,使用 `free` 函数释放动态分配的内存,避免内存泄漏。
阅读全文