创建一个一个长度为n的数组且任意两个元素不重复,用一个方法类存储C语言
时间: 2024-02-21 09:59:30 浏览: 68
C语言不支持面向对象编程,但是我们可以使用结构体来实现类似的效果。具体实现如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef struct {
int *arr;
int len;
} RandomArray;
void generate(RandomArray *ra) {
srand(time(NULL));
ra->arr = (int *) malloc(ra->len * sizeof(int));
if (ra->arr == NULL) {
printf("内存分配失败!\n");
exit(1);
}
for (int i = 0; i < ra->len; i++) {
ra->arr[i] = rand() % (ra->len * 10) + 1;
for (int j = 0; j < i; j++) {
if (ra->arr[i] == ra->arr[j]) {
i--;
break;
}
}
}
}
void print(RandomArray *ra) {
for (int i = 0; i < ra->len; i++) {
printf("%d ", ra->arr[i]);
}
printf("\n");
}
int main() {
int n;
printf("请输入数组长度n: ");
scanf("%d", &n);
RandomArray ra;
ra.len = n;
generate(&ra);
print(&ra);
free(ra.arr);
return 0;
}
```
在这段代码中,我们定义了一个RandomArray结构体,其中包含了一个动态分配的整型数组和数组长度len。我们使用了generate()函数和print()函数分别实现了生成随机数组和输出数组的功能。在generate()函数中,我们使用了动态内存分配函数malloc()来分配数组内存,然后通过一个双重循环来确保生成的随机数组中没有重复的元素。在main()函数中,我们首先输入数组的长度n,然后创建了一个RandomArray结构体对象ra,并调用了generate()函数来生成随机数组,最后调用了print()函数来输出数组。注意在程序结束之前,需要使用free()函数来释放动态分配的内存。
阅读全文