healer_tang 2021-06-15 00:14 采纳率: 100%
浏览 312
已采纳

c语言✍🏻世界杯小组赛分组

选题9、世界杯小组赛分组题目描述:世界杯是每四年的一个热门话题,请用C语言实现世界杯的小组分组。接下来才是你应该关注的重点:参赛队:英格兰、法国、德国、意大利、西班牙、荷兰、葡萄牙、克罗地亚、土耳其、俄罗斯、瑞典、捷克、塞尔维亚、加纳、科特迪瓦、突尼斯、尼日利亚、喀麦隆、日本、韩国、澳大利亚、伊朗、美国、墨西哥、哥斯达黎加、洪都拉斯、巴西、阿根廷、巴拉圭、智利、乌拉圭、厄瓜多尔。世界杯的小组分组规则如下:有八只种子球队,分别是:乌拉圭队、西班牙队、德国队、阿根廷队、哥伦比亚队、比利时队、瑞士队以及东道主巴西队。这八只球队一定分别在A-----H八个组中(八只球队不能碰面)。小组分为A------H一共八个小组。分组结果按行输出。每个小组四个球队。(参考循环赛)。提示:1.可以用链表指针或者结构体数组;2.随机数;3.也许你能做到我没有想到的。

  • 写回答

3条回答 默认 最新

  • CSDN专家-link 2021-06-15 05:08
    关注
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    #define T League
    typedef struct T *T;
    #define TreeHeigh 5
    
    char *Other[] = {"英格兰","意大利","葡萄牙","克罗地亚","土耳其","瑞典","捷克","塞尔维亚","加纳","科特迪瓦","突尼斯","尼日利亚","喀麦隆","日本","韩国","澳大利亚","伊朗","美国","墨西哥","哥斯达黎加","洪都拉斯","巴拉圭","智利","厄瓜多尔"};
    
    char *Send[] = { "乌拉圭","西班牙","德国","阿根廷","荷兰","法国","巴西","俄罗斯"};
    int F_Send[ 8 ];
    int F_Other[ 24 ];
    
    struct T{
        int Score;
        int Heigh;
        T Left;
        T Right;
        char *Name;
    };
    
    void INIT( T *Root, int Heigh );
    
    void Print( T Root );
    
    int main( void )
    {
        T Root;
        int heigh;
    
        heigh = 0;
    
        Root = NULL;
        INIT( &Root, heigh );
        Print( Root );
    
    
        return 0;
    }
    
    void INIT( T *Root, int Heigh )
    {
        int f;
        static int g = -1;
        srand( ( unsigned )time( NULL ) );    
        if( NULL == *Root )
        {
            T new = ( T )malloc( sizeof( struct T ) );
            if( NULL == new )
                exit( EXIT_FAILURE );
            new->Left = NULL;
            new->Right = NULL;
            new->Name = NULL;
            new->Score = -1;
            new->Heigh = Heigh;
            *Root = new;
        }
    
        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;
    
        INIT( &(*Root)->Left, Heigh + 1 );
        INIT( &(*Root)->Right, Heigh + 1 );
    }
    
    void Print( 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" );
        }
        Print( Root->Left );
        Print( Root->Right );
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 iOS绕地区网络检测
  • ¥15 python验证码滑块图像识别
  • ¥15 根据背景及设计要求撰写设计报告
  • ¥15 QT6颜色选择对话框显示不完整
  • ¥20 能提供一下思路或者代码吗
  • ¥15 用twincat控制!
  • ¥15 请问一下这个运行结果是怎么来的
  • ¥15 单通道放大电路的工作原理
  • ¥30 YOLO检测微调结果p为1
  • ¥15 DS18B20内部ADC模数转换器