C#学习day05(开发福彩双色球系统附思维导图)
1.删除数组中的元素接收要删除的元素的索引,将该索引后使用元素向前移一位,即覆盖该元素2.数组中元素反转1.从第一个元素开始和最后一个元素交换。2.然后把第二个元素和倒数第二个元素交换这样只需要交换数组名.length/2次就可以了3.定义一个中间变量实现两数交换如: char temp arr[i];arr[i] arr[arr.Length - 1 - i];arr[arr.Length - 1 - i] temp;数据类型根据数组中存储类型进行改变4.冒泡排序:排序介绍排序主要是针对数字类型进行的。常见的排序方式升序排序、降序排序。升序排序从小到大排列。降序排序从大到小排列。排序算法冒泡排序、快速排序、插入排序、选择排序等。每一种排序实现的方式又有所不同但是最终的结果都是一样的。区别在于时间和空间的不同。2.冒泡排序介绍冒泡排序实现思路和现实生活中水中吐泡泡一样。在水中吐泡泡以后会逐渐的往上升。3. 冒泡排序规则从脚标0的元素开始每两个元素依次进行比较。前一个元素大于后一个元素交换位置。前一个元素不大于后一个元素不交换位置。假设对一个数组中的元素进行升序排序3.1第一轮比较第一次比较脚标0和脚标15和25大于2交换元素的位置。第二次比较脚标1和脚标25和4比较5大于4, 交换元素的位置。第三次比较脚标2和脚标35和3比较5大于3交换元素位置。第四次比较脚标3和脚标45和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因为最后一次比较的是最后两个也就是说比较到倒数第二个就可以了。2. 第二轮i 1需要比较(length-1) - 1 次。因为本轮最后1个值不需要比较了。3. 第三轮i 2需要比较length-1- 2 次。因为本轮最后2个值不需要比较了。4. 第四轮i 3,需要比较length-1- 3 次。因为本轮最后3个值不需要比较了。只需要比较1次。5.当第i轮比较时比较的次数为length-1-i。5.多维数组多维数组的本质为数组中的每个元素依然为数组。创建多维数组//2 - 第一维长度//3 - 第二维长度int[,] ints new int[2, 3];6.双色球案列福彩双色球要求如下:福彩双色球由6位1到33的整数红球加1位1到16的整数蓝球组成。new int[5, 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 int[5, 6];int[,] BlueBalls new int[5, 1];int[,] beiShu new int[5, 1];int[] winNumber new int[7];Random rnd new Random();bool[] states1 new bool[34];bool[] states new bool[34];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){states[i] 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进行接收,所以输入的只能是数字,输入字符等会直接报错,本人较懒就不做修改了,大家可以自行优化;

相关新闻

最新新闻

日新闻

周新闻

月新闻