C#,入门教程(04)——Visual Studio 2022 数据编程实例:随机数与组合
上一篇:
真正的程序从数据开始,到数据结束。
先简单复习一下:
(1)前面三节课的代码,有不少不懂的?对的。咱们是沉浸式教学,如同把你扔到大不列颠大街上、大厦里去学习英语。不懂的,先放过!
(2)学习了 Panel 、 Button 以及 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万中奖号码 :P
webBrowser1.DocumentText = redBallString + "+" + blueBallString;
}
更多数值与数学的花样,且听下回及所有下回分解。
?——————————————————————
POWER BY 315SOFT.COM &
TRUFFER.CN
下一篇:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!