1. 用c语言生成0~999 999(均包含,或者更大范围)之间的随机整数20 000个,要求随机数都不相同(如相同,则需要去重复并重新生成当前随机数),即,得到20 000个两两不同的随机数,再用冒泡排序进行递增排序。
时间: 2023-12-13 15:05:39 浏览: 121
好的,我可以帮你解决这个问题。
首先,我们可以使用C语言中的rand()函数生成随机数,然后将这些随机数存储到数组中。我们可以使用一个循环来生成20000个随机数,并且在每次生成随机数时检查它是否已经在数组中出现过,如果已经出现过,则重新生成随机数。
以下是一个示例代码,可以生成20000个0到999999之间的随机数,并将它们存储在一个数组中:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ARRAY_SIZE 20000
int main() {
int rand_array[ARRAY_SIZE];
int i, j, temp, flag;
// 使用时间作为种子,以保证每次生成的随机数不同
srand(time(NULL));
// 生成随机数,并存储到数组中
for (i = 0; i < ARRAY_SIZE; i++) {
do {
rand_array[i] = rand() % 1000000;
flag = 0;
for (j = 0; j < i; j++) {
if (rand_array[i] == rand_array[j]) {
flag = 1;
break;
}
}
} while (flag);
}
// 冒泡排序
for (i = 0; i < ARRAY_SIZE - 1; i++) {
for (j = 0; j < ARRAY_SIZE - i - 1; j++) {
if (rand_array[j] > rand_array[j + 1]) {
temp = rand_array[j];
rand_array[j] = rand_array[j + 1];
rand_array[j + 1] = temp;
}
}
}
// 输出排序后的数组
for (i = 0; i < ARRAY_SIZE; i++) {
printf("%d ", rand_array[i]);
}
printf("\n");
return 0;
}
```
在这个示例代码中,我们使用了一个flag变量来标记当前生成的随机数是否已经在数组中出现过。如果flag为1,说明当前生成的随机数已经在数组中出现过,需要重新生成。如果flag为0,则说明当前生成的随机数是一个新的随机数,可以存储到数组中。
接下来,我们使用冒泡排序对数组进行递增排序。冒泡排序是一种简单的排序算法,它的核心思想是重复地遍历数组,并且每次比较相邻的两个元素,如果它们的顺序不正确,则交换它们的位置,直到整个数组排序完成。
最后,我们输出排序后的数组。
阅读全文