满意答案

#include

#include

#include

#define MAX_TOTAL_MONEY 200 //红包的最大金额

#define MIN_PER_PLAYER  1   //一个人抢到的的最小面额1元

#define MAX_PLAYER_CNT (MAX_TOTAL_MONEY/MIN_PER_PLAYER) //最大抢红包的游戏人数

typedef struct player

{

char *name;//标记玩家 可以不填

unsigned int money_get;//抢到的红包

}PLAYER_T;

//每个人领取到的红包金额不等 这个要求比较难搞 暂时不考虑

int main(int argc, char *argv[])

{

unsigned int total_money = 0;    //不考虑角和分 浮点运算比较复杂

unsigned int player_cnt = 0;

int on_off = 0;

int i = 0;

int j = 0;

PLAYER_T player[MAX_PLAYER_CNT] = {0};

PLAYER_T tmp = {0};

printf("输入红包金额:\n");

scanf("%u", &total_money);

printf("输入游戏人数:\n");

scanf("%u", &player_cnt);

printf("是否需要减小贫富差距(0为关闭其余为开启):\n");

scanf("%u", &on_off);

//不符合规则的输入判断

if (total_money > MAX_TOTAL_MONEY || 0 == total_money || 0 == player_cnt || player_cnt*MIN_PER_PLAYER > total_money)

{

printf("红包金额最小%u元 最大%u元 游戏人数最小1人 最大%u人\n", MIN_PER_PLAYER, MAX_TOTAL_MONEY, MAX_PLAYER_CNT);

return 0;

}

for (i = 0; i

{

//设置随机种子

srand(time(NULL)+i);

//根据随机种子获取一个伪随机数作为抢到的红包 并通过余运算使其始终小于total_money

player[i].money_get = rand()%total_money;

//限制所有人所能抢到的最大红包为当前金额池的1/5而不是全部

if (0 != on_off)

{

if (total_money > 5)//5块钱以上再限制

{

player[i].money_get = rand()%(total_money/5);

}

}

//最后一个人拿所有剩下的红包

if (player_cnt - 1 == i)

{

player[i].money_get = total_money;

}

//运气差随机到0元 给你最小面额

else if (0 == player[i].money_get)

{

player[i].money_get = MIN_PER_PLAYER;

}

//剩下的要保证每个人能抢到最小面额

else if (total_money - player[i].money_get

{

player[i].money_get = total_money - (player_cnt-i-1)*MIN_PER_PLAYER;

}

//把抢到的金额从红包池中减掉

total_money -= player[i].money_get;

//如果填了name 可以把名字打印出来

printf("第%d个玩家抢到红包:%u元\n", i+1, player[i].money_get);

}

//冒泡排序 找出手气最佳者

for (i = 0; i

{

for (j = i+1; j

{

if (player[i].money_get

{

memcpy(&tmp, &player[j], sizeof(PLAYER_T));

memcpy(&player[j], &player[i], sizeof(PLAYER_T));

memcpy(&player[i], &tmp, sizeof(PLAYER_T));

}

}

}

printf("手气最佳者抢到红包:%u元\n", player[0].money_get);//如果填了name 可以把名字打印出来

return 0;

}

00分享举报

微信红包c语言程序,C语言 微信红包相关推荐

  1. 编写一个函数,模拟微信发红包的红包分配过程。函数有两个参数:一个参数表示红包总金额,默认值为100,另一个参数表示红包数量,默认为10。程序输入:红包总金额和红包数量;程序输出:每个红包的金额。要求:

    题目 ‬‬编写一个函数,模拟微信发红包的红包分配过程.函数有两个参数:一个参数表示红包总金额,默认值为100,另一个参数表示红包数量,默认为10.程序输入:红包总金额和红包数量:程序输出:每个红包的金 ...

  2. 微信怎么制作小程序?制作微信小程序流程

    现在即使小程序已经非常普及了,依然也是有很多人加入到小程序的大队伍中,纷纷制作自己的微信小程序.那么微信怎么制作小程序?制作微信小程序流程又是什么呢?今天就带大家一起来看看. 微信怎么制作小程序?制作 ...

  3. 棱形旋转c语言程序_C 语言时隔 5 年重回巅峰,这 20 个热门项目拿去练手!

    在上个月的 TIOBE 编程语言排名中,C 语言和 Java 的差距只有 0.01%.在近日 TIOBE 公布的 2020 年 5 月编程语言排行榜中,C 语言成功超越了 Java,重返第一的王者宝座 ...

  4. 蜂鸣器发出7种音阶c语言程序_C语言编程新思路

    第一章 单元测试 1.单选题: 关于一个C语言程序执行的起点和终点,以下选项正确的是 ( ). 选项: A: main 任意 B: main 最后一个 C: main main D: 第一个 最后一个 ...

  5. 文件的记录c语言程序,c语言程序学生籍贯信息记录簿设计.docx

    c 语言程序学生籍贯信息记录簿设计 学生籍贯信息记录簿 课程设计报告书 班 级: 方 0909-1 学 号:姓 名: 苑 小 叶 指导教师 : 康 亚 男 石家庄铁道大学四方学院 2010年 07月 ...

  6. 学生实验平台搭建c语言程序,c语言程序设计实验学生用.doc

    c语言程序设计实验学生用 C语言程序设计 实验指导 (学生用) 计算机基础教研室 <C语言程序设计>课程组 2012年9月 前 言 <C语言程序设计>是计算机科学技术系面向全校 ...

  7. 插入法排序c语言程序,C语言之插入排序算法

    一.什么是直接插入算法? 直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的纪录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的纪录插入完为止,得到一个新的有序序列. 选择 ...

  8. 青花瓷音乐的单片机c语言程序,c语言曲谱_单片机c语言音乐简谱代码

    51单片机曲谱编写音乐程序,我看不懂曲谱,谁能教下我! //<世上只有妈妈好>51单片机C语言程序和音乐采灯程序 //此程序在硬件上调试通过 //本程序的单片机晶振采用11.0592MHZ ...

  9. 框图c语言程序,C语言程序设计框图

    <C语言程序设计框图>由会员分享,可在线阅读,更多相关<C语言程序设计框图(86页珍藏版)>请在人人文库网上搜索. 1.第三章控制结构,返回总目录,目录,3.1节目结构框,3. ...

最新文章

  1. t-top 命令详解
  2. # 异运算_小学数学整数、小数、分数加减法运算法则及练习(可打印)
  3. Linux TCP队列相关参数的总结
  4. Java中int转Double再转换成百分数并应用在求同比昨日增长率
  5. linux使用权限模式启动mongodb,Linux安装MongoDB启动及常见问题解决
  6. php向后兼容,PHP: 不向后兼容的变更 - Manual
  7. Pytorch 其它有关Tensor的话题,GPU,向量化
  8. LINUX PATH环境变量
  9. 物联网卡11位和13位号码的区别在于哪
  10. LeetCode之翻转字符串里的单词
  11. 机器学习中优化算法论文合集
  12. 字符集详解(学习,看一篇就够了)
  13. Infor EAM咨询服务调研报告-Infor EAM咨询服务市场地位以及主要的竞争对手
  14. 新装的服务器发布iis网站后提示500.19错误代码:0x8007000d问题的解决过程
  15. cocos creator 绘制闪电特效
  16. 物理隔离与数据交换-网闸的设计原理与误区
  17. 1.无线通信:传播和衰落
  18. 神经网络的基本原理,神经网络算法三大类
  19. DOTween的使用
  20. 计算机英语比赛,传亚运精神,燃英语激情——记计算机学院第八届英语演讲比赛初赛...

热门文章

  1. 名字与地址转换getservbyname 与 getservbyport函数
  2. win10浏览器闪退_win10内置浏览器闪退怎么办
  3. Inno Setup汉化方法
  4. 如何测试数字硅麦软件,硅麦克风技术规格及测试方法
  5. 数据要素市场的发展及运行
  6. C++11 Features in Visual C++ 11 - VS2010对C++11特性支持的情况
  7. 查看锐捷poe交换机供电状态_锐捷POE交换机配置方法
  8. DYA9面向对象中--多态
  9. VS2019中,解决“错误CS0006:未能找到元数据文件”
  10. 在ubuntu 18上进行NPB和mpiP的整合