C#学习day05(开发福彩双色球系统附思维导图)

1.删除数组中的元素

接收要删除的元素的索引,将该索引后使用元素向前移一位,即覆盖该元素

2.数组中元素反转

1.从第一个元素开始,和最后一个元素交换。

2.然后把第二个元素和倒数第二个元素交换,这样只需要交换数组名.length/2次就可以了

3.定义一个中间变量实现两数交换

如: char temp = arri;

arri = arrarr.Length - 1 - i;

arrarr.Length - 1 - i = temp;

数据类型根据数组中存储类型进行改变

4.冒泡排序:

  1. 排序介绍

排序主要是针对数字类型进行的。

常见的排序方式:升序排序、降序排序。

  • 升序排序:从小到大排列。
  • 降序排序:从大到小排列。

排序算法:冒泡排序、快速排序、插入排序、选择排序等。每一种排序实现的方式又有所不同,但是最终的结果都是一样的。区别在于时间和空间的不同。

2. 冒泡排序介绍

冒泡排序实现思路和现实生活中水中吐泡泡一样。在水中吐泡泡以后,会逐渐的往上升。

3. 冒泡排序规则

从脚标0的元素开始,每两个元素依次进行比较。

  • 前一个元素大于后一个元素,交换位置。
  • 前一个元素不大于后一个元素,不交换位置。

假设对一个数组中的元素进行升序排序:

3.1 第一轮比较

第一次比较,脚标0和脚标1,5和2,5大于2,交换元素的位置。

第二次比较,脚标1和脚标2,5和4比较,5大于4, 交换元素的位置。

第三次比较,脚标2和脚标3,5和3比较,5大于3,交换元素位置。

第四次比较,脚标3和脚标4,5和1比较,5大于1,交换元素的位置。

总结:如果长度为Length的数组,只需要比较4次。

3.2 第二轮比较

第一次0脚标和1脚标比较,2和4比较,2不大于4,不交换位置。

第二次脚标1和脚标2比较,4和3比较,4大于3,交换元素的位置。

第三次脚标2和脚标3比较,4和1比较,4大于1,交换元素的位置。

总结:本轮比较次数为3次。

3.3 第三轮比较

第一次脚标0和脚标1比较,2和3比较,2不大于3,不交换位置。

第二次脚标1和脚标2比较,3和1比较,3大于1,交换元素的位置。

总结:本轮比较次数为2次。

3.4 第四轮比较

第一次脚标0和脚标1比较,2和1比较,2大于1,交换元素的位置。

总结:本轮比较次数为1次。

4. 冒泡排序总结

4.1 比较的轮数

每轮比较都会把本轮比较的最大(小)值移动到最后面,最后剩下的为最大(最小),比较的轮数为:数组长度-1轮

4.2 每轮比较次数

假设当前是第i轮(i从0开始的值):

1.第一轮i = 0 ,需比较(length-1 ) - 0 次。(之所以减1,因为最后一次比较的是最后两个,也就是说比较到倒数第二个就可以了)。

  1. 第二轮i = 1,需要比较(length-1) - 1 次。因为本轮最后1个值不需要比较了。

  2. 第三轮i = 2,需要比较(length-1)- 2 次。因为本轮最后2个值不需要比较了。

  3. 第四轮i = 3,需要比较(length-1)- 3 次。因为本轮最后3个值不需要比较了。只需要比较1次。

  4. 当第i轮比较时,比较的次数为length-1-i

5.多维数组

多维数组的本质为数组中的每个元素依然为数组。

创建多维数组

//2 -> 第一维长度

//3 -> 第二维长度

int, ints = new int2, 3;

6.双色球案列

福彩双色球要求如下:

福彩双色球由6位1到33的整数(红球),加1位1到16的整数(蓝球)组成。

new int5, 8 //最多购买5组,每一组中有6个红球号码 1个蓝球号码 1个倍数

开奖过程由一台机器完成。里面装有33个红球,从33个红球里面随机出6个中奖号码,产生的顺序并不是从小打到的。每个球的数字都是不重复的。

最后从16个蓝球里面随机产生一个蓝球中奖号码。

规则中最难的就是计算一等奖,因为一等奖需要看奖金池总数,还和累计奖金有关系。

在这里我们设定:一等奖固定500万元,二等奖固定5万元

实现代码如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace 福彩双色球系统

{

internal class Program

{

static void Main(string\[\] args)

{

Console.WriteLine("------------------------");

Console.WriteLine("欢迎使用福彩双色球系统!");

Console.WriteLine("------------------------");

int, redBalls = new int5, 6;

int, BlueBalls = new int5, 1;

int, beiShu = new int5, 1;

int\[\] winNumber = new int7;

Random rnd = new Random();

bool\[\] states1 = new bool34;

bool\[\] states = new bool34;

int totalNumber1 = 0;

bool b = true, b1 = true, b2 = true;

do

{

Console.WriteLine("请选择你想进行的操作:");

Console.WriteLine("1.购买彩票");

Console.WriteLine("2.查看购买彩票");

Console.WriteLine("3.开奖");

Console.WriteLine("4.查看中奖情况");

Console.WriteLine("5.查看当期开奖号码");

Console.WriteLine("6.退出系统");

string input = Console.ReadLine();

switch (input)

{

case "1":

{

if(b2 == false)

{

Console.WriteLine("本期已经开奖,不能再购买号码!");

break;

}

while (b1)

{

for (int i = 0; i < states.Length; i++)

{

statesi = true;

复制代码
                            }

                            Console.WriteLine($"这是您购买的第{totalNumber1 + 1}组号码");
                            for (int i = 0; i < 6; i++)
                            {
                                Console.WriteLine($"请输入您要购买的第{i + 1}个红球号码(1-33):");
                                int redBallnumber = Convert.ToInt32(Console.ReadLine());
                                while (redBallnumber < 1 || redBallnumber > 33)
                                {
                                    Console.ForegroundColor = ConsoleColor.Red;
                                    Console.WriteLine("红球号码必须是1-33之间的整数!");
                                    Console.WriteLine("请重新输入!");
                                    Console.ResetColor();
                                    redBallnumber = Convert.ToInt32(Console.ReadLine());
                                }

                                if (states[redBallnumber] == true)
                                {
                                    redBalls[totalNumber1, i] = redBallnumber;
                                }

                                else
                                {
                                    Console.ForegroundColor = ConsoleColor.Red;
                                    Console.WriteLine("该号码您之前已经选择过了!");
                                    Console.WriteLine("请重新输入!");
                                    Console.ResetColor();
                                    i--;
                                    continue;
                                }
                                states[redBallnumber] = false;

                            }
                            for (int i = 0; i < 6; i++)
                            {
                                for (int j = i + 1; j < 6; j++)
                                {
                                    if (redBalls[totalNumber1, i] > redBalls[totalNumber1, j])
                                    {
                                        int temp = redBalls[totalNumber1, i];
                                        redBalls[totalNumber1, i] = redBalls[totalNumber1, j];
                                        redBalls[totalNumber1, j] = temp;
                                    }
                                }
                            }

                            Console.WriteLine("请输入您要购买的蓝球号码(1-16):");
                            BlueBalls[totalNumber1, 0] = Convert.ToInt32(Console.ReadLine());
                            while (BlueBalls[totalNumber1, 0] < 1 || BlueBalls[totalNumber1, 0] > 16)
                            {
                                Console.WriteLine("蓝球号码必须是1-16之间的整数!");
                                Console.WriteLine("请重新输入!");
                                BlueBalls[totalNumber1, 0] = Convert.ToInt32(Console.ReadLine());
                            }

                            Console.WriteLine("请输入您要购买的倍数:");
                            beiShu[totalNumber1, 0] = Convert.ToInt32(Console.ReadLine());
                            while (beiShu[totalNumber1, 0] < 1 || beiShu[totalNumber1, 0] > 99)
                            {
                                Console.WriteLine("倍数必须是1-99之间的整数!");
                                Console.WriteLine("请重新输入!");
                                beiShu[totalNumber1, 0] = Convert.ToInt32(Console.ReadLine());
                            }

                            Console.WriteLine("是否继续购买下一组号码?(y/n)");
                            string continuePurchase = Console.ReadLine();
                            if (continuePurchase == "y" )
                            {
                                totalNumber1++;
                                if (totalNumber1 >= 5)
                                {
                                    Console.WriteLine("您已经购买了5组号码,不能再购买了!");
                                    b1 = false;
                                    continue;
                                }
                            }
                            else
                            {
                                b1 = false;
                                continue;
                            }
                        } 

                    }

                    break;
                case "2":
                    // 查看购买彩票逻辑
                    {
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine($"您这张彩票中一共购买了{totalNumber1 + 1}组号码");
                        Console.WriteLine("购买号码如下");
                        for (int i = 0; i <= totalNumber1; i++)
                        {
                            Console.Write($"第{i + 1}组号码:");
                            for (int j = 0; j < 6; j++)
                            {
                                Console.Write($"{redBalls[i, j]} ");
                            }
                            Console.Write($" - {BlueBalls[i, 0]} ");
                            Console.WriteLine($" * {beiShu[i, 0]}");
                        }
                        Console.ResetColor();
                    }
                    
                    break;
                case "3":
                    // 开奖逻辑
                    {
                        if (redBalls[0, 0] == 0)
                        {
                            Console.ForegroundColor = ConsoleColor.Red;
                            Console.WriteLine("您还没有购买号码,请先购买号码!");
                            Console.ResetColor();
                            break;
                        }
                        while (b2)
                        {
                            for (int i = 0; i < states.Length; i++)
                            {
                                states1[i] = true;
                            }

                            for (int i = 0; i < 6; i++)
                            {
                                int num = rnd.Next(1, 34);
                                while (states1[num] == false)
                                {
                                    num = rnd.Next(1, 34);
                                }
                                winNumber[i] = num;
                                states1[num] = false;
                            }

                            for (int i = 0; i < 6; i++)
                            {
                                for (int j = i + 1; j < 6; j++)
                                {
                                    if (winNumber[i] > winNumber [j])
                                    {
                                        int temp = winNumber[i];
                                        winNumber[i] = winNumber[ j];
                                        winNumber[j] = temp;
                                    }
                                }
                            }

                            winNumber[6] = rnd.Next(1, 17);
                            b2 = false;
                            Console.ForegroundColor = ConsoleColor.Green;
                            Console.WriteLine("开奖成功!");
                            Console.ResetColor();
                        }
                       
                    }
                    break;
                case "4":
                    // 查看中奖情况逻辑
                    {
                        if (redBalls[0,0] == 0)
                        {
                            Console.ForegroundColor = ConsoleColor.Red;
                            Console.WriteLine("您还没有购买号码,请先购买号码!");
                            Console.ResetColor();
                            break;
                        }
                        
                        if(b2 == true)
                        {
                            Console.ForegroundColor = ConsoleColor.Red;
                            Console.WriteLine("还没有开奖,无法查看中奖情况!");
                            Console.ResetColor();
                            break;
                        }
                        int cnt = 0;
                        for (int i = 0; i <= totalNumber1; i++)
                        {
                            int sumNumber = 0;
                            int redCount = 0;
                            int blueCount = 0;
                            for (int j = 0; j < 6; j++)
                            {
                                for (int k = 0; k < 6; k++)
                                {
                                    if (redBalls[i, j] == winNumber[k])
                                    {
                                        redCount++;
                                    }
                                }
                            }
                            if (BlueBalls[i, 0] == winNumber[6])
                            {
                                blueCount++;
                            }
                            Console.ForegroundColor = ConsoleColor.Blue;
                            Console.WriteLine($"第{i + 1}组号码中奖情况:红球中{redCount}个,蓝球中{blueCount}个");
                            Console.ResetColor();
                            sumNumber = redCount + blueCount;
                            Console.ForegroundColor = ConsoleColor.Red;
                            switch (sumNumber)
                            {
                                
                                case 7:
                                    Console.WriteLine($"恭喜您第{i + 1}组中了一等奖!5000000元!");
                                    cnt++;
                                    break;
                                case 6:
                                    if (blueCount == 0)
                                    {
                                        Console.WriteLine($"恭喜您第{i + 1}组中了二等奖!50000元!");
                                        cnt++;
                                    }
                                    else
                                    {
                                        Console.WriteLine($"恭喜您第{i + 1}组中了三等奖!3000元!");
                                        cnt++;
                                    }
                                    break;
                                case 5:
                                    Console.WriteLine($"恭喜您第{i + 1}组中了四等奖!200元!");
                                    cnt++;
                                    break;
                                case 4:
                                    Console.WriteLine($"恭喜您第{i + 1}组中了五等奖!10元!");
                                    cnt++;
                                    break;
                                case 3:
                                    Console.WriteLine($"恭喜您第{i + 1}组中了六等奖!5元!");
                                    cnt++;
                                    break;
                                case 2:
                                    Console.WriteLine($"恭喜您第{i + 1}组中了六等奖!5元!");
                                    cnt++;
                                    break;
                                case 1:
                                    Console.WriteLine($"恭喜您第{i + 1}组中了六等奖!5元!");
                                    cnt++;
                                    break;

                                default:
                                    Console.WriteLine($"很遗憾,您第{i + 1}组没有中奖!");
                                    break;
                            }
                        }
                        Console.WriteLine("您共中奖{0}次", cnt);
                        Console.ResetColor();
                    }
                    break;
                case "5":
                    // 查看当期开奖号码
                    {
                        if(b2 == true)
                        {
                            Console.ForegroundColor = ConsoleColor.Red;
                           
                            Console.WriteLine("还没有开奖,无法查看当期开奖号码!");
                            Console.ResetColor();
                            break;
                        }
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.WriteLine("当期开奖号码为:");
                        for (int i = 0; i < 6; i++)
                        {
                            Console.Write($"{winNumber[i]} ");
                        }
                       
                    
                        Console.WriteLine("\n您购买的号码为:");
                        for(int i = 0;i <= totalNumber1; i++)
                        {
                            Console.Write($"第{i + 1}组号码:");
                            for (int j = 0; j < 6; j++)
                            {
                                Console.Write($"{redBalls[i, j]} ");
                            }
                            Console.Write($" + {BlueBalls[i, 0]} \n");
                           
                        }
                        Console.ResetColor();
                    }
                    break;
                case "6":
                    // 退出系统逻辑
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("感谢使用福彩双色球系统!");
                        Console.WriteLine("欢迎您的再次使用!");
                        Console.ResetColor();
                        b = false;
                        break;
                    }
                default:
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("无效输入,请重新选择");
                    Console.ResetColor();
                    break;
            }

        } while (b);





        Console.ReadKey();
    }
}

}

代码实现界面如下:

注意:由于使用的是用Int进行接收,所以输入的只能是数字,输入字符等会直接报错,本人较懒就不做修改了,大家可以自行优化;

相关推荐
zzz_23681 小时前
TencentDB-Agent-Memory 深度解析:让多个 Agent 共享项目经验的记忆中枢
java·开发语言·jvm·人工智能·agent·memory·tencent db
湘美书院--湘美谈教育1 小时前
湘美书院谈探索式教育,中医药AI研究络病理论
大数据·人工智能·深度学习·学习·生活
PC2005-cloud1 小时前
Redis学习笔记:Cluster 集群读写分离实战,Lettuce + Spring Boot 从配置到验证
redis·笔记·学习
charlie1145141912 小时前
IMX6ULL WM8960 的移植——前置介绍
开发语言·c++·开源项目·嵌入式linux
迷迭香yy2 小时前
Python实战:涨停板“假封板”识别系统的工程实现
开发语言·人工智能·python
charlie1145141912 小时前
Cinux是如何管理进程的 —— 上下文与调度
开发语言·c++·操作系统·开源项目
math_hongfan2 小时前
鸿蒙存储异常高级排查:文件损坏检测/数据恢复/读写失败重试/磁盘空间预警系统性根治方案
学习·华为·harmonyos·鸿蒙
-银雾鸢尾-2 小时前
C#中的协变和逆变
开发语言·c#
阿米亚波2 小时前
【C++ 异常处理】try-catch
开发语言·c++·笔记·try-catch