用C语言生成一个程序:从1到20这20个数中随机生成10对不重复的数,要求10对数字均不重复
时间: 2023-06-27 13:04:54 浏览: 128
以下是一个用C语言编写的程序,可以随机生成10对不重复的数字:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int nums[20];
int pairs[10][2];
int i, j, k, temp;
// 初始化数组
for (i = 0; i < 20; i++) {
nums[i] = i + 1;
}
// 随机打乱数组
srand((unsigned)time(NULL));
for (i = 0; i < 20; i++) {
j = rand() % 20;
temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
// 生成10对不重复的数字
k = 0;
for (i = 0; i < 20 && k < 10; i += 2) {
pairs[k][0] = nums[i];
pairs[k][1] = nums[i + 1];
for (j = 0; j < k; j++) {
if ((pairs[k][0] == pairs[j][0] && pairs[k][1] == pairs[j][1]) ||
(pairs[k][0] == pairs[j][1] && pairs[k][1] == pairs[j][0])) {
// 如果已经有相同的一对数字,则重新生成
i -= 2;
k--;
break;
}
}
k++;
}
// 输出结果
printf("随机生成的10对数字为:\n");
for (i = 0; i < 10; i++) {
printf("%d %d\n", pairs[i][0], pairs[i][1]);
}
return 0;
}
```
程序的基本思路是先生成一个包含1到20的数组,然后随机打乱数组。接着从打乱后的数组中取出前10个数作为10对不重复的数字,并且检查每一对数字是否已经在之前生成的数字对中出现过。如果已经出现过,则重新生成一对数字。最后输出结果即可。
阅读全文