|
C语言,编写自定义函数void hongbao(int amount,int renshu),实现红包分配算法,在函数中输出每个人分配到的红包金额。
C语言,编写自定义函数void hongbao(int amount,int renshu),实现红包分配算法,在函数中输出每个人分配到的红包金额。amount,表示红包总金额,renshu表示分配总人数。编写main函数测试,并且在main函数中,输入红包总金额和分配总人数。
以下是使用C语言编写的自定义函数 void hongbao(int amount, int renshu) ,用于实现红包分配算法,并在函数中输出每个人分配到的红包金额。在 main 函数中,我们将测试该函数,并从用户输入中获取红包总金额和分配总人数。
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- void hongbao(int amount, int renshu) {
- int* hongbaoArr = (int*)malloc(renshu * sizeof(int)); // 分配存储红包金额的数组
- int remainAmount = amount; // 剩余红包金额
- int remainRenshu = renshu; // 剩余分配人数
- // 初始化随机数种子
- srand(time(0));
- // 分配红包金额
- for (int i = 0; i < renshu - 1; i++) {
- int randomAmount = rand() % (remainAmount / remainRenshu * 2 - 1) + 1; // 随机生成红包金额
- hongbaoArr[i] = randomAmount;
- remainAmount -= randomAmount;
- remainRenshu--;
- }
- hongbaoArr[renshu - 1] = remainAmount; // 最后一个人获得剩余的红包金额
- // 输出每个人分配到的红包金额
- printf("每个人分配到的红包金额:\n");
- for (int i = 0; i < renshu; i++) {
- printf("第%d个人:%d\n", i + 1, hongbaoArr[i]);
- }
- free(hongbaoArr); // 释放动态分配的内存
- }
- int main() {
- int amount, renshu;
- printf("请输入红包总金额:");
- scanf("%d", &amount);
- printf("请输入分配总人数:");
- scanf("%d", &renshu);
- hongbao(amount, renshu);
- return 0;
- }
复制代码 在 hongbao 函数中,我们使用随机数生成算法来分配红包金额。首先,我们动态分配一个整型数组来存储每个人分配到的红包金额。然后,通过循环迭代,每次生成一个随机金额并将其存储在数组中,同时更新剩余的红包金额和分配人数。最后,输出每个人分配到的红包金额。 在 main 函数中,我们从用户输入中获取红包总金额和分配总人数,并调用 hongbao 函数来进行红包分配。
|
|