希望可以使用C语言完成这个程序
时间: 2024-03-25 08:37:20 浏览: 9
好的,以下是使用C语言实现的版本:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int MyRandom(int n, int m) {
static int initialized = 0;
if (!initialized) {
srand(time(NULL)); // 使用当前时间作为种子,初始化随机数发生器
initialized = 1;
}
int range = m - n + 1;
return n + rand() % range;
}
int main() {
int x, y;
printf("请输入x和y(以空格分隔):");
scanf("%d %d", &x, &y);
int* nums = (int*)malloc(y * sizeof(int)); // 动态分配数组
for (int i = 0; i < y; i++) {
nums[i] = -1; // 初始化为-1
}
for (int i = 0; i < y; i++) {
int num;
do {
num = MyRandom(1, x); // 生成不重复的随机数
} while (find(nums, nums + y, num) != nums + y); // 判断是否已经存在
nums[i] = num; // 存入数组中
}
printf("随机数为:");
for (int i = 0; i < y; i++) {
printf("%d ", nums[i]);
}
printf("\n");
free(nums); // 释放内存
return 0;
}
```
这个程序中,我们使用了动态分配数组并且在程序结束时释放了内存。同时,我们使用了`scanf`函数来读取用户输入的x和y,使用`printf`函数来输出结果。由于C语言中没有STL库,我们可以使用一个简单的循环来判断生成的随机数是否与之前已经存在的随机数重复。