当前位置: 首页 > news >正文

C#,入门教程(04)——Visual Studio 2022 数据编程实例:随机数与组合

上一篇:

C#,入门教程(03)——Visual Studio 2022编写彩色Hello World与动画效果https://blog.csdn.net/beijinghorn/article/details/123478581

C#,入门教程(01)—— Visual Studio 2022 免费安装的详细图文与动画教程https://blog.csdn.net/beijinghorn/article/details/123350910

C#,入门教程(02)—— Visual Studio 2022开发环境搭建图文教程https://blog.csdn.net/beijinghorn/article/details/123434181

真正的程序从数据开始,到数据结束。

先简单复习一下:

(1)前面三节课的代码,有不少不懂的?对的。咱们是沉浸式教学,如同把你扔到大不列颠大街上、大厦里去学习英语。不懂的,先放过!

(2)学习了 PanelButton 以及 WebBrowser 三种组件,和 WindowsForm 程序界面的简单设计方法;WebBrowser 是最好的输出!

(3)知道了 字符串 string 数据类型及其简单的使用方法,做出了彩色的 Hello World 和动画!

(4)学习了随机数 Random,还学了一点 html 的知识。

这节课,学习 C# 的 “数” 与 数值!

所有编程语言都要处理这些数据:字节、(长、短)整数、(单、双精度)浮点数(含专门用于计算金额的金融专用数值)及字符与字符串、object。当然还有这些数据的各种集合。

1、C#数据第一:数字的组合!

C#的常用数据类型是 int 、 double 以及 string。int 是整数(英文 integer) 的简称,默认占据 4 个字节;double 是双精度实数(double precision real number)的简称,占 8 个字节。

int 可以用来表示很大的整数了,包括正负数。比如:双色球的奖池,为 ¥1,854,403,191元 ,大约18亿,就可以用 int 表示: 

int winPool = 1854403191;

注:如果奖池超过25亿,能行吗?答:int 不够了,用 long!

一个独立的数值,通常不是程序的主体。一串数据才更有意义,比如一串数字组成的彩票号码!下面学习编写一段程序,随机生成一注彩票号码,或许能中500万呢(:P)。

先用前面 课程学习的方法,创建 WindwosForm,Panel1,Panel2,WebBrowser1 及 Button1,Button2,Button3。

 双击 Button1 ,编写(复制)相应的代码:

在 前面加入一行,定义一个随机数发生器 rnd。

 public partial class Form1 : Form{Random rnd = new Random();public Form1(){InitializeComponent();}

增加 button1_click 的代码:

private void button1_Click(object sender, EventArgs e)
{// 双色球最多6个红球int redBallMax = 6;// 有效红球数量;int redBall = 0;// 结果字符串,用于保存最后的成果!string redBallString = "<font color=red>";// 循环!while (redBall < redBallMax){// 生成一个红球号码!string oneRedBall = String.Format("{0:D2}", rnd.Next(1, 34));// 如果结果字符串中已经有新代码,不行啊!if (redBallString.Contains(oneRedBall)){continue;}// 添加新号码到结果redBallString += oneRedBall + ",";redBall++;}// 去掉最后的一个逗号!避免被投注站老板骂哦!redBallString = redBallString.Substring(0, redBallString.Length - 1);redBallString += "</font>";// 再加入蓝球!string blueBallString = "<font color=blue>";blueBallString += String.Format("{0:D2}", rnd.Next(1, 17));blueBallString += "</font>";// 号码显示到浏览器webBrowser1.DocumentText = redBallString + "+" + blueBallString;
}

特别要注意其中的逻辑(逻辑是程序的灵魂!):

(1)红球最多6个,不能重复!号码在 01 与 33 之间;

(2)蓝球只有 1个,号码在 01-16 之间。

点击【Button1】 就能生成一注彩票号码!如果现在的时间是每周二、四、日的20:00之前,可以去投注站买彩票哈!中了500万,给俺私信表示一下感谢哦!

2、C#数据之二:合理的组合!

实际上,你拿着上面的彩票号码去购买,老板娘还是会暗暗骂你?新瓜蛋子。

为什么?因为红球顺序乱来,在彩票终端上找来找去,浪费时间撒。

程序员 和 码农 的本质区别就是为谁着想,程序员为他人着想,码农为自己和老板着想。

咱们在上述代码的基础上,做出些改进。要用到新的数据类型:数组!

数组 array ,就是 一组数啊。C# 是这样的:

int oneNumber; // 定义一个数int[] numberArray = new int[34]; // 定义一个存储34个数字的数组

彩票号码、身高数据、数学成绩等等都是一组数,一个方向检索计算即可,称为一维数组;一张Excel表格也是一组数,但需要从两个方向检索计算,称为二维数组;一个房间或飞机座舱内温度的分布,是立体的数据,需要从xyz三个方向检索计算,称为三维数组;一个房间或飞机座舱内温度、不同时间的分布,是超级立体的数据,需要从xyzt四个方向检索计算,称为四维数组;如此可以没完没了......

北京联高软件开发有限公司开发的 Truffer 与 Matlab 一样,支持无限维计算。

改进后的代码,双击【Button2】,写在 button2_click 中,如下:

private void button2_Click(object sender, EventArgs e)
{// 整数数组,记录33个红球的标志int[] redBallArray = new int[34];int redBallMax = 6;int redBall = 0;while (redBall < redBallMax){// 生成一个随机的红球数字int oneRedBall = rnd.Next(1, 34);// 标志位已经设置,再来!if (redBallArray[oneRedBall] == 1){continue;}// 设置标志位redBallArray[oneRedBall] = 1;redBall++;}// 从01开始检索每个标志位int redBallIndex = 1;string redBallString = "<font color=red>";while (redBallIndex < redBallArray.Length){if (redBallArray[redBallIndex] == 1){redBallString += String.Format("{0:D2}", redBallIndex) + ",";}redBallIndex++;}redBallString = redBallString.Substring(0, redBallString.Length - 1);redBallString += "</font>";// 蓝球string blueBallString = "<font color=blue>";blueBallString += String.Format("{0:D2}", rnd.Next(1, 17));blueBallString += "</font>";// 显示500万中奖号码 :PwebBrowser1.DocumentText = redBallString + "+" + blueBallString;
}

更多数值与数学的花样,且听下回及所有下回分解。

 ——————————————————————

POWER BY 315SOFT.COM &
TRUFFER.CN

下一篇:

C#,入门教程(05)——Visual Studio 2022源程序(源代码)自动排版的功能动画图示https://blog.csdn.net/beijinghorn/article/details/124675293

http://www.lryc.cn/news/524831.html

相关文章:

  • UWB高精度定位技术在智能仓储中的应用
  • 计算机毕业设计hadoop+spark视频推荐系统 短视频推荐系统 视频流量预测系统 短视频爬虫 视频数据分析 视频可视化 视频大数据 大数据
  • 【AI编辑器】字节跳动推出AI IDE——Trae,专为中文开发者深度定制
  • CSDN 博客之星 2024:默语的技术进阶与社区耕耘之旅
  • 《探秘鸿蒙Next:非结构化数据处理与模型轻量化的完美适配》
  • async++库的使用示例
  • springboot基于微信小程序的手机银行系统
  • 25/1/22 算法笔记<ROS2> TF变换
  • Android系统开发(六):从Linux到Android:模块化开发,GKI内核的硬核科普
  • dp 凸优化
  • 详细介绍:Kubernetes(K8s)的技术架构(核心概念、调度和资源管理、安全性、持续集成与持续部署、网络和服务发现)
  • [SAP ABAP] Dialog屏幕开发
  • 安全测试之 SSTI 模板注入入门
  • 滑动窗口解题模板
  • SOC和SOH的含义
  • Genetic Prompt Search via Exploiting Language Model Probabilities
  • 1561. 你可以获得的最大硬币数目
  • DNA结合之Motif_1:CNN
  • kong 网关和spring cloud gateway网关性能测试对比
  • 【2024 CSDN博客之星】个人收获分享
  • Codeforces Round 998 (Div. 3)(部分题解)
  • [创业之路-261]:《向流程设计要效率》-1-流程体系的建立是一场全方位的变革,一定会遇到各种阻力,需要全方位、系统性地进行流程管理
  • 深入理解 Spring 的 Lazy Loading:原理、实现与应用场景
  • 扬帆数据结构算法之雅舟航程,漫步C++幽谷——LeetCode刷题之移除链表元素、反转链表、找中间节点、合并有序链表、链表的回文结构
  • 【unity游戏开发之InputSystem——02】InputAction的使用介绍(基于unity6开发介绍)
  • Excel常用功能总结
  • 【go语言】变量和常量
  • Node.js——express中间件(全局中间件、路由中间件、静态资源中间件)
  • 大语言模型的语境中“越狱”和思维链
  • JAVA学习记录4