模拟微信发拼手气红包

1.微信拼手气红包介绍

需要设定  金额, 个数 

 

2.思路介绍

建立test.c 测试版块   project.c 函数实现版块  project.h   引用版块

建立循环函数-----实现函数的入口

建立存放红包个数的数组(不完全初始化)-----实现红包金额的存放

实现 红包的随机分配

排查最佳手气

3.代码缺陷以及优化方向     和 注意点

缺陷:有时红包金额总数不符合money

优化方向:找到可以存储     未知个数的存放的东西 

优化方向的替代(需要注意的点):!!!!!!

可以将数组元素扩大,但数组未初始化,这样后面没用到的数组可以不打印,不影响结果

4.代码实现

test.c 

#include "project.h"


void menu()
{
    printf(" 模拟发拼手气红包\n");                //输入金额,个数,留言;
    printf("***** 1.paly *****\n");                    //拼手气的实现的自定义函数
    printf("***** 0.exit *****\n");                // 显示 最佳手气(while循环和选择语句)
    printf("开始请输入1\n退出请输入2\n");
}

project()
{
    int money = 0;                      //100     
    int number = 0;                        //10
    printf("请输入红包金额\n");
    //set(money,number);
    scanf("%d",&money);
    printf("请输入红包个数\n");
    scanf("%d", &number);
    //  未知个数的存放没有解决,故先固定为10个红包,先开创10个元素的数组
    int arr[10] = { 0 };

    //拼手气的实现
    distribute(arr,money,number);
    //排查最佳手气
    check(arr,money,number);
}
int main()
{
    srand((unsigned int)time(NULL));
    int input = 0;
    do
    {
        menu();
        scanf("%d",&input);
        switch (input)
        {
        case 1:
            project();
            break;
        case 0:
            printf("退出\n");
            break;
        default :
            printf("输入错误,请重新输入\n");
            break;
        }
    } while (input);
    return 0;
}

project.c

//拼手气的实现
//(如何将金额随机分配给相应的个数       并且要打印,显示出来)
void distribute(int arr[10],int money, int number)
{
    printf("开始发红包\n");
    //int arr[10] = { 0 };
   
    //随机数放循环中,生成number-1个随机数(钱可以是money/number),最后一个红包就是最后剩下的金额
    //int arr[number] = { 0 };
    int i = 0;
    int sum = 0;
    //int arr[10] = { 0 };
    //将number份钱放到number个数组里面
    for (i = 0; i < number-1; i++)
    {
        //rand() % number + 1;
        arr[i] = rand() % number + 1;
        sum += rand() % number + 1;
    }
    arr[number-1] = money - sum;
    for (i = 0; i < number; i++)
    {
        printf("%d\n",arr[i]);
    }
}


//排查最佳手气
void check(int arr[10], int money, int number)
{
    int i = 0;
    int max1 = 0;
    int max2 = 0;
    //查找最大红包
    for (i = 0; i <= number-1; i++)
    {
        if (arr[i] >= arr[i + 1])
        {         
            max1 = arr[i];
        }
        
    }

    if (i = number - 1)
    {
        if (arr[i - 1] >= arr[i])
        {
            max2 = arr[i - 1];
        }
    }
    if (max1 > max2) 
    {
        printf("最佳手气红包为:%d\n", max1);
    }
    else
        printf("最佳手气红包为:%d\n", max2);
    

}

project.h

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>


//#define money 100;
//#define number 10;

void distribute(int arr[10], int money, int number);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值