用C/C++进行随机分组

/************************
要求将下列名单随机分组:分组要求,随机选择4个人组成一组
输出结果:4个人一行进行输出,每行代表一个组
例如:
许新华  王玉恒  陶小康  王娇娇
盛  开  郑  丹  陈  芳  张  龙
陈梦玉  祝秋培  吴赟鹏  胡光兴
曾从威  边金鹏  陈逸伦  王  琦
刘加封  徐煜清  姚  笛  孔海宇
孙凌霄  王  鹏  王  虎  李  峰
周  波  蒋恺均  徐小蕤  缪  峰
刘江涛  陈  喆  方文倩  崔雅倩
陈  程  陈振宇  李  森  陈志辉
李鸿飞

人名:
曾从威
蒋恺均
刘江涛
崔雅倩
祝秋培
吴赟鹏
李鸿飞
王  虎
缪  峰
张  龙
刘加封
姚  笛
郑  丹
孔海宇
陈逸伦
徐煜清
陈  喆
盛  开
方文倩
边金鹏
陈振宇
陶小康
孙凌霄
王玉恒
王娇娇
许新华
胡光兴
周  波
王  鹏
李鸿飞
陈  程
徐小蕤
李  峰
王  琦
陈梦玉
陈志辉
李  森
陈  芳
**************************/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    const char *name[] =
    {
        "曾从威" ,
        "蒋恺均" ,
        "刘江涛" ,
        "崔雅倩" ,
        "祝秋培" ,
        "吴赟鹏" ,
        "李鸿飞" ,
        "王  虎" ,
        "缪  峰" ,
        "张  龙" ,
        "刘加封" ,
        "姚  笛" ,
        "郑  丹" ,
        "孔海宇" ,
        "陈逸伦" ,
        "徐煜清" ,
        "陈  喆" ,
        "盛  开" ,
        "方文倩" ,
        "边金鹏" ,
        "陈振宇" ,
        "陶小康" ,
        "孙凌霄" ,
        "王玉恒" ,
        "王娇娇" ,
        "许新华" ,
        "胡光兴" ,
        "周  波" ,
        "王  鹏" ,
        "李鸿飞" ,
        "陈  程" ,
        "徐小蕤" ,
        "李  峰" ,
        "王  琦" ,
        "陈梦玉" ,
        "陈志辉" ,
        "李  森" ,
        "陈  芳" ,
    };
    int len = sizeof(name)/sizeof(name[0]);
    printf("len: %d\n",len);
    
    //乱序种子
    srand((unsigned)time(NULL));
    
    int last = len-1; // 最后一个元素的下标
    int i;
    for(i =0;i < len; i++)
    {
        int index = rand() % len; // 产生一个随机数作为数组下标
        const char *tmp = name[index];
        name[index] = name[last];
        name[last] = tmp;
        last--;
    }
    
    for(i = 0;i< len; i++)
    {
        if(i % 4 == 0)
            printf("\n");
        printf("%12s",name[i]);
    }
    
    printf("\n");
    return 0;
}


 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zxa1334

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值