c语言红包编程作业代码,C语言实现抢红包算法
本文实例为大家分享了C语言实现抢红包的具体代码,供大家参考,具体内容如下
1、算法背景:
大家知道,微信拼手气红包和普通红包两种。普通红包每个人抢到的金额是固定的(总额的平均数),拼手气红包是随机金额(每个人抢到的是随机的,差别可能非常大,有的人抢到的是1分,有的抢到的可能是几元、十几元、几十元),目前的抢红包算法只能输入两个参数,即总金额、总人数。
2、算法要求:
现要求同学们设计一个改进的抢红包算法,可以设定总金额(total)、总人数(num)、抢到的最低金额(min)和最高金额(max),这样就可以控制每个抢红包的,抢到的不会太少,也不会太多。
(1)先用自然语言给出算法设计的思想:
第一步:输入红包金额总金额,红包个数,红包金额最低/最高额度。
第二步:判断带输入数据是否满足算法要求,不满足输出提示信息,并重新输入数据。
第三步:生成一个随时红包金额
第四步:判断红包金额是否满足条件,如果满足,继续生成下一个红包金额,如果不满足在
此生成新的随机红包金额,知道满足条件。
第五步:输出抢红包的过程信息
(2)进行异常检查与处理;
(3)给出C语言源代码实现,运行结果展示;
源代码如下
#include
#include
#include
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);
}
程序运行结果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
c语言红包编程作业代码,C语言实现抢红包算法相关推荐
- c语言红包编程作业代码,C语言实现随机抢红包功能
用C语言实现红包发放随机抢红包的功能,这主要是一个随机数的应用与控制.程序运行截图如图下: 代码如下: #include #include #include int main() { system(& ...
- c语言红包编程作业代码,C语言实现抢红包程序代码精简版
本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 其实这是段相当简单的代码,至于为什么还要把它放在博客上呢,主要是针对那些刚入门学编程的同学(或者是对程序感兴趣的同 ...
- C语言实训作业PPT,C语言实训作业.docx
C语言实训作业.docx . C语言通识教育实训指导书 实训课 (2 学时)指导教师何天成2016 年月日前言C 语言是现代最流行的通用程序设计语言之一,它既具有高级程序设计语言的优点,又具有低级程序 ...
- 二级c语言上机编程技巧,二级C语言上机编程题技巧总结
二级C语言上机编程题技巧 一. 方法总结 1. 二级C语言上机编程题在二级上机考试中属于较难题型,因此很多同学都害怕通过不了.综合 往年的考试,结合考试大纲,每年考试的编程题都有一定的规律和方法,只要 ...
- 兰州大学C语言程序设计课程作业,兰州大学C语言程序设计课程作业1附答案.doc...
兰州大学C语言程序设计课程作业1附答案.doc C 语言程序设计课程作业语言程序设计课程作业_A 历次成绩 完成时间 查看详情 1.0.0 2015-11-21 091531 2.0.0 2015-1 ...
- Coursera机器学习 week4 神经网络的表示 编程作业代码
这是Coursera上 Week4 的 "神经网络的表示" 的编程作业代码.经过测验,全部通过. 下面是 lrCostFunction.mlrCostFunction.m 的代码: ...
- c语言祝生日快乐的程序,C语言如何编程生日快乐代码
C语言编程生日快乐代码的方法:首先要按[CTRL+R]键,cmd进入命令行,输入pip install turtle安装第三方库:然后打开C语言编辑器,将相关代码复制进去:最后按快捷键F5进行保存且执 ...
- c语言版生日祝福程序,C语言如何编程生日快乐代码
C语言编程生日快乐代码的方法:首先要按[CTRL+R]键,cmd进入命令行,输入pip install turtle安装第三方库:然后打开C语言编辑器,将相关代码复制进去:最后按快捷键F5进行保存且执 ...
- c语言对编程对作用,c语言编程心得体会
c语言编程心得体会 c语言是在国内外广泛使用的一种计算机语言.以下是小编整理的c语言编程心得体会,欢迎大家阅读! c语言编程心得体会1 说到我学习c语言时,真是用千言万语呀!记得刚开始学的时候,我的c ...
最新文章
- 再谈符号间干扰(一)
- maven aliyun 仓库速度就是快
- 笔记 Activator.CreateInstance(Type)
- 关于sql server 代理(已禁用代理xp)
- Altium Designer的元件库
- java-net-php-python-jspm毕业就业管理系统演示录像2019计算机毕业设计程序
- 【存储数据恢复】esx vmfs的互斥导致存储数据丢失的数据恢复案例
- TiPLM---产品全生命周期管理系统
- 智能水杯设计方案_智能水杯方案的结构、理念、特点
- pycharm更改运行环境
- wordpress文章自动同步天涯博客插件wp2Tianya发布
- 微信文件分享的那些坑
- 硬件工程师入门基础知识(一)基础元器件认识(一)
- 国内外机器学习、深度学习竞赛平台
- 聚划算影响淘宝搜索权重?客服:未接到通知
- Python_基础知识02
- linux待机唤醒_Linux电源管理-休眠与唤醒
- SpringBoot 重定向
- excel教程自学网_188集Office零基础自学教程,教你玩转word、ppt、excel,速领取
- java自动下发工单源码_PESCMS Ticket开源客服工单系统 v1.3.5