c语言实现随机分组小程序,要求输入总人数和每组人数输出分组情况
时间: 2024-10-27 13:15:03 浏览: 23
c语言程序设计谭浩强-格式输入输出PPT.ppt
在C语言中实现一个简单的随机分组程序,你可以使用`<stdio.h>`、`<stdlib.h>`和`<time.h>`头文件,其中`rand()`和`srand()`函数用于生成随机数,`time(NULL)`用于设置随机数生成器的种子。
下面是一个基本的示例,它假设总人数小于等于最大组数的倍数:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void random_shuffle(int arr[], int size) {
srand(time(NULL)); // 设置随机种子
for (int i = size - 1; i > 0; i--) {
int j = rand() % (i + 1); // 随机选择索引
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
int main() {
int total_people, group_size;
printf("请输入总人数: ");
scanf("%d", &total_people);
printf("请输入每组人数: ");
scanf("%d", &group_size);
if (total_people % group_size == 0) { // 如果能整除,则直接分配
int groups[total_people / group_size][group_size]; // 创建数组存储每个组
int count = 0;
for (int i = 0; i < total_people / group_size; i++) {
for (int j = 0; j < group_size; j++) {
groups[i][j] = count++;
}
}
printf("\n分组情况:\n");
for (int i = 0; i < total_people / group_size; i++) {
printf("组 %d: ", i + 1);
for (int j = 0; j < group_size; j++) {
printf("%d ", groups[i][j]);
}
printf("\n");
}
} else { // 否则先随机打乱,再分组
int people_list[total_people];
for (int i = 0; i < total_people; i++) {
people_list[i] = i + 1;
}
random_shuffle(people_list, total_people);
printf("\n分组情况(按随机顺序):\n");
int current_group = 0;
for (int i = 0; i < total_people; i += group_size) {
printf("组 %d:", current_group + 1);
for (int j = 0; j < group_size && i+j < total_people; j++) {
printf("%d ", people_list[i+j]);
}
printf("\n");
current_group++;
}
}
return 0;
}
```
这个程序首先检查总人数是否可以整除每组人数,如果可以则直接分配,否则会先随机打乱人群顺序,然后按照组大小划分。
阅读全文