用C语言编写一个程序将输入的组名随机分为AB两大组
时间: 2024-05-13 09:20:40 浏览: 9
以下是用C语言编写的程序将输入的组名随机分为AB两大组的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#define MAX_GROUPS 100 // 最大组数
#define MAX_GROUP_NAME_LENGTH 20 // 最大组名长度
int main()
{
char groups[MAX_GROUPS][MAX_GROUP_NAME_LENGTH]; // 存储组名的数组
int group_count = 0; // 组数计数器
printf("请输入组名(每个组名占一行,以空行结束):\n");
// 读入组名
while (fgets(groups[group_count], MAX_GROUP_NAME_LENGTH, stdin) != NULL)
{
// 去掉换行符
groups[group_count][strlen(groups[group_count]) - 1] = '\0';
// 判断是否读入完毕
if (strcmp(groups[group_count], "") == 0)
{
break;
}
// 组数计数器加一
group_count++;
}
// 随机分组
srand(time(NULL));
int group_index;
int group_mark[MAX_GROUPS] = {0}; // 标记已分配的组
for (int i = 0; i < group_count; i++)
{
do
{
group_index = rand() % group_count;
} while (group_mark[group_index] != 0);
group_mark[group_index] = (i % 2) + 1; // 将组标记为1或2,表示分配到A组或B组
}
// 输出分组结果
printf("分组结果如下:\n");
for (int i = 0; i < group_count; i++)
{
printf("%s\t%s\n", groups[i], group_mark[i] == 1 ? "A" : "B");
}
return 0;
}
```
程序的流程如下:
1. 定义存储组名的数组和组数计数器。
2. 读入组名,直到遇到空行为止。
3. 随机分组,将组标记为1或2,表示分配到A组或B组。
4. 输出分组结果。
程序主要用到了C语言的输入输出和字符串操作函数,以及随机数生成函数。在随机分组时,使用了一个数组`group_mark`来标记已分配的组,以避免重复分组。