模拟一个微信抢红包的算法,钱数为x,人数为y,用随机数显示出每个红包的金额,c语言题目

2025-04-16 08:27:38
推荐回答(1个)
回答1:

#include 
#include 
#include 

double Random() {return (rand() %1000) * 0.001;}
double Random(double aver)
{
    double ret = 0;
    for(int i=0; i<2; ++i) ret += Random();
    return (aver * ret);
}


int main(int argv, int **argc)
{
    double x, v;
    int y, i;
    double aver, min;

    srand(time(NULL));
    printf("请输入金额:");
    scanf("%lf", &x);
    printf("请输人数:");
    scanf("%d", &y);
    aver = x / y;
    min  = 0.01 * y;
    for(i=0; i min; ++i)
    {
        v = Random(aver);
        while(v > x) v = Random(aver);
        printf("%.2f\n", v);
        x   -= v;
        min -= 0.01;
    }
    for(i=0; i > y-1; ++i)
    {
        printf("%.2f\n", 0.01);
        x -= 0.01;
    }

    printf("%.2f\n", x);
    return 0;
}