随机产生20个10以内的自然数,去除其中的重复数据,输出原始数据和其中不重复的元素。(用)c语言解答
时间: 2024-11-12 10:41:59 浏览: 17
在C语言中,你可以使用数组和哈希表(如`unordered_set`)来生成20个不重复的10以内随机整数。这里是实现的一个例子:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdbool.h>
#include <unordered_set>
int main() {
srand(time(0)); // 设置随机种子,保证每次运行结果不同
int numbers[20]; // 存储生成的20个随机数
std::unordered_set<int> unique_numbers; // 用于存储不重复的数字
// 生成并插入到哈希表中
for (int i = 0; i < 20; ++i) {
while (true) {
int random_num = rand() % 10 + 1; // 生成1-10之间的随机数
if (unique_numbers.find(random_num) == unique_numbers.end()) { // 检查数字是否已存在
unique_numbers.insert(random_num); // 插入到哈希表中
numbers[i] = random_num; // 同时存入数组
break;
}
}
}
// 输出原始数据
printf("原始数据(包含重复):\n");
for (int num : numbers) {
printf("%d ", num);
}
printf("\n");
// 输出不重复的数据
printf("不重复元素:\n");
for (const auto& num : unique_numbers) {
printf("%d ", num);
}
printf("\n");
return 0;
}
```
在这个代码中,我们首先创建了一个大小为20的数组`numbers`和一个`unordered_set`。然后在循环中,生成一个随机数并检查它是否已经在哈希表中。如果不在,我们就将其添加到`numbers`数组和哈希表中,并跳出循环。
阅读全文