17B_2微信红包分配

问题描述:

编程实现一个简单的微信红包分配算法,满足要求即可:(1)键盘输入红包的总金额X元,以及红包个数N,例如10.88,表示10.88元。N是正整数。(2)每个红包的金额至少为1分钱,如果总金额无法满足这一条件,则提示重新输入。(3)在红包金额固定的条件下,单个红包的金额随机生成,且最小金额可以是1分钱。(4)屏幕上输出红包分配结果。

sample input:

100 5//红包金额100,个数为5

sample output:

10.1  20  30.2  9.9  29.8

测试结果:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

知识点:

%g:自动选择%f和%e两种格式中较短的格式输出,并且不输出数字后面没有意义的零

AC代码

#include <stdio.h>
#include <stdlib.h>
#include <time.h>


/*
    最小金额为1分,而time()生成的数为整数,
    故先把所有金额换算成'分',每次分配金额都要为之后分配金额留下(N-1)分,其中N为剩下
    没有分的红包个数,X表示还剩下的金额数(分),那么当前红包金额范围是[1,X-(N-1)]
    
*/


int main()
{
    srand((unsigned)time(NULL));//种子
    double x;
    int n,temp;
    scanf("%lf %d",&x,&n);
    while(x<n*0.01)
    {
        printf("输入金额过小,请重新输入:\n");
        scanf("%lf %d",&x,&n);
    }
    int X=(int)(x*100);//换算成‘分’,此处要(x*100)不然会先执行类型转换
    while(n>0)
    {
        if(n==1)
        {
            printf("%g",(double)X/100);
            return 1;
        }
        temp=rand()%(X-n+1)+1;
        printf("%g ",((double)(temp))/100);
        X-=temp;//减去temp
        n--;
    }

}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值