荼蘼== 发表于 2022-6-23 15:13:34

求助c语言实现抽奖程序

本帖最后由 荼蘼== 于 2022-6-27 21:11 编辑

1、流程:从 M 个人中随机抽出 N 个人“中奖”

        1)M个人的信息至少包含“编号”“姓名”

        2)本轮抽中的人要退出下一轮“抽奖”(下一轮不能出现)

        3)抽出的 N 个人应该均匀的分布在 M 个人中(不能扎堆)

        4)每轮抽奖命中概率应为 1/(M-X),X为已经抽中的人数

                注:设 rand 函数为 0~ RAND_MAX 之间的均匀分布



2、输入输出要求

        1)输入的 M 个人从文件 candidate.txt 读取

                  文件的每一行形式:学号, 姓名

                  预设文件中的每一行都是按照学号升序排列的

          如:

                                20191235, 小李

                                20191236, 小王

                                20191237, 小张

                                20191238, 小刘



        2)命令行输入抽取的中奖人数 N

        3)按抽中顺序屏幕打印 N 个人的姓名

                  如:

                                中奖人1:小张,20191237

                                中奖人2:小李,20191235



        4)按编号顺序将 N 个中将人信息写到 lucky.txt 文件

                文件的每一行形式:学号, 姓名

                要求:写入的学号也要按照升序排列

                        如:

                                20191235, 小李

                                20191237, 小张



3、功能实现要求

        1)用结构体定义候选人信息

                struct node



        2)用递归方式匹配中奖人

                struct node *pop(struct node *p, int i)

                i 为中奖人序号



        3)定义合适的数据结构管理候选人

                不允许使用C++的STL模板类

荼蘼== 发表于 2022-6-27 09:47:05

有没有大佬能救救孩子{:10_299:}

ExiaGN001 发表于 2022-6-27 09:50:43

荼蘼== 发表于 2022-6-27 09:47
有没有大佬能救救孩子

抽奖用递归这东西不稳定,建议rand()去做,重了就再来一轮
页: [1]
查看完整版本: 求助c语言实现抽奖程序