帮我用C语言写一个随机生成6个0-80的不重复的数的程序
时间: 2024-03-17 10:41:39 浏览: 66
好的,以下是用C语言编写的随机生成6个0-80的不重复的数的程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 6 // 生成随机数的个数
#define MAX_NUM 80 // 随机数的最大值
int main() {
int i, j, num, nums[N] = {0};
// 设置随机数种子
srand((unsigned)time(NULL));
// 循环生成6个不重复的随机数并输出
for (i = 0; i < N; i++) {
do {
num = rand() % (MAX_NUM + 1); // 生成0-80之间的随机数
for (j = 0; j < i; j++) {
if (nums[j] == num) { // 判断是否重复
break;
}
}
} while (j < i); // 如果重复则重新生成
nums[i] = num; // 将生成的随机数存入数组
printf("%d ", num); // 输出随机数
}
return 0;
}
```
程序解析:
1. 定义了两个预处理指令:`#define N 6`表示生成随机数的个数为6,`#define MAX_NUM 80`表示随机数的最大值为80。
2. 在主函数中,首先定义了三个变量:`i`表示循环计数器,`j`表示查找重复数用的计数器,`num`表示生成的随机数。
3. 定义了一个长度为6的整型数组`nums`,用于存储生成的随机数。
4. 使用`srand()`函数设置了随机数种子,保证每次运行程序生成的随机数不同。
5. 使用`for`循环生成6个不重复的随机数,并将其输出。在循环中,先使用`do-while`循环生成随机数,如果生成的随机数与已有的随机数重复,则重新生成随机数。最后将生成的随机数存入数组,使用`printf()`函数输出随机数。
注意事项:
1. 在循环中使用`do-while`循环生成随机数,这样可以保证每次循环至少执行一次,避免因为第一次生成的随机数恰好与后面的随机数重复而死循环。
2. 在判断重复时,使用`for`循环遍历已有的随机数,如果找到重复的数,则跳出循环。
3. `rand() % (MAX_NUM + 1)`的结果为0-80之间的整数,注意要加上1,因为取模的结果不包括右端点。
希望能对您有所帮助!
阅读全文