时间:2021-05-20
本文实例为大家分享了C语言实现抢红包的具体代码,供大家参考,具体内容如下
1、算法背景:
大家知道,微信拼手气红包和普通红包两种。普通红包每个人抢到的金额是固定的(总额的平均数),拼手气红包是随机金额(每个人抢到的是随机的,差别可能非常大,有的人抢到的是1分,有的抢到的可能是几元、十几元、几十元),目前的抢红包算法只能输入两个参数,即总金额、总人数。
2、算法要求:
现要求同学们设计一个改进的抢红包算法,可以设定总金额(total)、总人数(num)、抢到的最低金额(min)和最高金额(max),这样就可以控制每个抢红包的,抢到的不会太少,也不会太多。
(1)先用自然语言给出算法设计的思想:
第一步:输入红包金额总金额,红包个数,红包金额最低/最高额度。
第二步:判断带输入数据是否满足算法要求,不满足输出提示信息,并重新输入数据。
第三步:生成一个随时红包金额
第四步:判断红包金额是否满足条件,如果满足,继续生成下一个红包金额,如果不满足在
此生成新的随机红包金额,知道满足条件。
第五步:输出抢红包的过程信息
(2)进行异常检查与处理;
(3)给出C语言源代码实现,运行结果展示;
源代码如下
#include <stdio.h>#include <stdlib.h>#include <string.h>void input();int range_random_price(int start_price, int end_price);void redPackets(double Total, int num, double Min_price, double Max_price);int maxx = 0, maxx_index = -1;int main(){ input(); return 0;}// 数据输入void input(){ double total; int num; double min_price, max_price; printf("请输入以下数据:\n"); printf("红包总金额: "); scanf("%lf", &total); putchar('\n'); printf("红包数量: "); scanf("%d", &num); putchar('\n'); printf("红包最低金额: "); scanf("%lf", &min_price); putchar('\n'); printf("红包最高金额: "); scanf("%lf", &max_price); putchar('\n'); redPackets(total, num, min_price, max_price);}// 生成(a, b) 之间的随机数int range_random_price(int start_price, int end_price){ return rand()%(end_price-start_price+1) +start_price;}// total :总金额(元) num:人的个数 min_price max_price :最低/最高金额void redPackets(double Total, int num, double Min_price, double Max_price){ // 刚开始金额全部扩大100倍转变成整数,最后输出的再除以一百,转变为浮点数 int total = (int)Total*100; int min_price = (int)Min_price*100; int max_price = (int)Max_price*100; if((total*1.0 / num) - min_price*1.0 < 1e-9) { printf("您输入的总金额过小,或者抢的红包金额最低限度过大,请重新输入\n"); input(); return ; } printf("抢红包结果如下:\n"); for(int i = 1; i < num; i++) { int random_price; while(1) { random_price = range_random_price(min_price, max_price); //判断剩下的金额是否满足条件 if((total - random_price)*1.0 / (num - i) - min_price*1.0 >= 1e-9) break; } if(maxx < random_price) maxx = random_price, maxx_index = i; total -= random_price;// 剩余金额 printf("第 %d 个人抢到的红包金额为 %.2f, 红包剩余金额为 %.2f\n", i, (double)(random_price/100.0), (double)(total/100.0)); } if(maxx < total) maxx = total, maxx_index = num; // 输出最后一个人的红包金额 printf("第 %d 个人抢到的红包金额为 %.2f, 红包剩余金额为 0.00\n", num, (double)(total/100.0)); printf("运气王是 %d 号\n", maxx_index);}程序运行结果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
用C语言实现红包发放随机抢红包的功能,这主要是一个随机数的应用与控制。程序运行截图如图下:代码如下:#include#include#includeintmai
本文实例讲述了基于C语言实现的迷宫算法。分享给大家供大家参考,具体如下:利用c语言实现迷宫算法,环境是vc++6.0.#include#include#incl
本文实例为大家分享了C语言实现24点游戏的具体代码,供大家参考,具体内容如下参考文章:C语言实现经典24点算法将算法实现改成C语言,并可在linux服务器上运行
本文实例为大家分享了C语言实现抢红包程序的具体代码,供大家参考,具体内容如下其实这是段相当简单的代码,至于为什么还要把它放在博客上呢,主要是针对那些刚入门学编程
Linux页面置换算法的C语言实现编写算法,实现页面置换算法FIFO、LRU、OPT;针对内存地址引用串,进行页面置换算法进行页面置换。其中,算法所需的各种参数