【发布时间】:2021-03-24 18:28:40
【问题描述】:
我有这个练习:
编写一个以三个值作为参数的 C 函数 RandArr2():
- 整数数组 A
- 一个整数 n,表示 A 的大小(元素数)
- 整数 n'
函数RandArr2()返回一个数组,如下:
- 如果 n == n',则返回 A
- 如果 n > n',它会重新分配数组 A,创建一个新的整数数组 A',大小为 n'
- 如果 n
这是我返回分段错误的实现。
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
int * RandArr2(int * A, int n, int n1) {
int i;
if (n == n1) {
for (i = 0; i < n; i++) {
A[i] = rand();
}
return A;
} else if (n < n1) {
//reallocs the array A, creating a new array of integers A’ of size n’
A1 = (int * ) realloc(A, n1 * sizeof(int));
return A1;
} else {
/*reallocs the array A, creting a new array of integers A’ of size n’; it also fills all the
positions of A’ between n and n’ with random integers between -10 and 10 */
A1 = (int * ) realloc(A, n1 * sizeof(int));
for (i = n; i < n1; i++) {
A1[i] = -10 + rand() % (-10 - 10 + 1);
}
return A1;
}
}
int main() {
int n, n1;
int * A;
int i;
printf("insert two integer:");
scanf("%d, %d", & n, & n1);
A = (int * ) malloc(n * sizeof(int)); //inizializzo l'array
if (A != NULL) {
A = RandArr2(A, n, n1);
for (i = 0; i <= n; i++) {
printf("\n Elemento del vettore: %d", A[i]);
}
free(A);
} else {
printf("Error!");
exit(0);
}
return 0;
}
我是 C 新手,因此欢迎您提供各种帮助。
【问题讨论】:
-
您的
n<n1和n>n1案例混淆了。此外,您应该在调用RandArr2之前填充A。