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);