问题遇到的现象和发生背景
C语言实现世界杯的小组分组。参赛队:英格兰、法国、德国、意大利、西班牙、荷兰、葡萄牙、克罗地亚、土耳其、俄罗斯、瑞典、捷克、塞尔维亚、加纳、科特迪瓦、突尼斯、尼日利亚、喀麦隆、日本、韩国、澳大利亚、伊朗、美国、墨西哥、哥斯达黎加、洪都拉斯、巴西、阿根廷、巴拉圭、智利、乌拉圭、厄瓜多尔。
世界杯的小组分组规则如下:八只种子球队,是:乌拉圭队、西班牙队、德国队、阿根廷队、哥伦比亚队、比利时队、瑞士队、巴西队。
这八只球队一定分别在A——H八个组中(八只球队不能碰面)。小组分为A——H一共八个小组。分组结果按行输出。每个小组四个球队。(参考循环赛)。
提示:1.可以用链表指针或者结构体数组;2.随机数;3.也许你能做到我没有想到的
问题相关代码,请勿粘贴截图
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define TreeHeigh 5
typedef struct tree_s tree_t;
struct tree_s {
int Score;
int Heigh;
tree_t *Left;
tree_t *Right;
const char *Name;
};
const char *Other[] =
{
"英格兰","意大利","葡萄牙","克罗地亚","土耳其","瑞典","捷克","塞尔维亚","加纳",
"科特迪瓦","突尼斯","尼日利亚","喀麦隆","日本","韩国","澳大利亚","伊朗","美国",
"墨西哥","哥斯达黎加","洪都拉斯","巴拉圭","智利","厄瓜多尔"
};
const char *Send[] = { "乌拉圭","西班牙","德国","阿根廷","荷兰","法国","巴西","俄罗斯" };
int F_Send[8];
int F_Other[24];
void tree_init(tree_t **root, int heigh);
void tree_print(tree_t *root);
int main(void)
{
tree_t *root;
int heigh;
heigh = 0;
root = NULL;
tree_init(&root, heigh);
tree_print(root);
return 0;
}
void tree_init(tree_t **root, int Heigh)
{
int f;
static int g = -1;
srand((unsigned)time(NULL));
if (NULL == *root)
{
tree_t *item = (tree_t *)malloc(sizeof(tree_t));
if (NULL == item)
exit(EXIT_FAILURE);
item->Left = NULL;
item->Right = NULL;
item->Name = NULL;
item->Score = -1;
item->Heigh = Heigh;
*root = item;
}
if (TreeHeigh == (*root)->Heigh)
{
++g;
if (0 == g % 4)
{
while (1)
{
f = rand() % 8;
if (0 == F_Send[f])
{
(*root)->Name = Send[f];
F_Send[f] = 1;
break;
}
}
}
else
{
while (1)
{
f = rand() % 24;
if (0 == F_Other[f])
{
(*root)->Name = Other[f];
F_Other[f] = 1;
break;
}
}
}
}
if (TreeHeigh == Heigh)
return;
tree_init(&(*root)->Left, Heigh + 1);
tree_init(&(*root)->Right, Heigh + 1);
}
void tree_print(tree_t *root)
{
static int g = 0;
static char ch = 'A';
if (NULL == root)
return;
if (NULL != root->Name)
{
if (0 == g % 4)
printf("%c\n", ch++);
printf("%s ", root->Name);
++g;
if (0 == g % 2)
printf("\n");
}
tree_print(root->Left);
tree_print(root->Right);
}
运行结果及报错内容
能够正常运行,但功能不全面
我的解答思路和尝试过的方法
运行环境为Visual Studio 2022
我想要达到的结果
再上面代码的基础上添加一个随机分组后模拟比赛进行淘汰赛,输出排名的功能
假设八个小组均为种子球队出线晋级下一轮,目前需要进行八支球队随机分四组进行八进四赛制,四组决出胜者后再分组进行四进二,最后进行决赛。输出世界杯比赛排名。
因为不知道谁会胜利就随机模拟吧,最后按照结果输出前四名(能按结果排序输出前八名更好)
代码两百行左右,越多越好,感谢各位