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

news2025/4/21 16:54:36

上一篇:

C#,入门教程(03)——Visual Studio 2022编写彩色Hello World与动画效果icon-default.png?t=N7T8https://blog.csdn.net/beijinghorn/article/details/123478581

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

C#,入门教程(02)—— Visual Studio 2022开发环境搭建图文教程icon-default.png?t=N7T8https://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万中奖号码 :P
    webBrowser1.DocumentText = redBallString + "+" + blueBallString;
}

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

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

POWER BY 315SOFT.COM &
TRUFFER.CN

下一篇:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1346421.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Field II 仿真软件——安装

1. 去官网下载文件压缩包 Field II Ultrasound Simulation Program (field-ii.dk) 在Download页面下载符合自己系统的压缩包。 2. 解压压缩文件&#xff0c;然后将这个文件夹添加到matlab的路径中&#xff0c;如下图所示&#xff1a; 3. 在matlab命令行输入&#xff1a;field…

05 HAL库驱动蜂鸣器唱出一首小歌

目录 一、蜂鸣器的基本知识 1、有源蜂鸣器 2、无源蜂鸣器 二、PWM的相关知识 1. PWM概念 2. PWM常见参数 3.PWM基本结构 三、蜂鸣器发出音调的原理 四、频率计算 五、实验开始 一、蜂鸣器的基本知识 蜂鸣器是一种能够发出持续而连续的声音的电子设备&#xff0c;它被…

【十一】【C++\动态规划】1218. 最长定差子序列、873. 最长的斐波那契子序列的长度、1027. 最长等差数列,三道题目深度解析

动态规划 动态规划就像是解决问题的一种策略&#xff0c;它可以帮助我们更高效地找到问题的解决方案。这个策略的核心思想就是将问题分解为一系列的小问题&#xff0c;并将每个小问题的解保存起来。这样&#xff0c;当我们需要解决原始问题的时候&#xff0c;我们就可以直接利…

.NET进阶篇06-async异步、thread多线程2

知识须要不断积累、总结和沉淀&#xff0c;思考和写做是成长的催化剂web 内容目录 1、线程Thread 一、生命周期 二、后台线程 三、静态方法 1.线程本地存储 2.内存栅栏 四、返回值 2、线程池ThreadPool 一、工做队列 二、工做线程和IO线程 三、和Thread区别 四、定时器 1、线…

3D视觉-激光三角测量法的分类

按照入射激光光束和被测物体表面法线的角度关系&#xff0c;一般分为直射式和斜射式两种方式。 1&#xff09;直射式测量 如图所示&#xff0c;激光器发出的光线&#xff0c;经会聚透镜聚焦后垂直入射到被测物体表面上&#xff0c;物体移动或者其表面变化&#xff0c;导致入射…

纯CSS的华为充电动画,它来了

&#x1f4e2; 鸿蒙专栏&#xff1a;想学鸿蒙的&#xff0c;冲 &#x1f4e2; C语言专栏&#xff1a;想学C语言的&#xff0c;冲 &#x1f4e2; VUE专栏&#xff1a;想学VUE的&#xff0c;冲这里 &#x1f4e2; Krpano专栏&#xff1a;想学Krpano的&#xff0c;冲 &#x1f514…

ubuntu磁盘管理常用命令

写的不全&#xff0c;后面随时修改。 Linux 磁盘管理常用三个命令为 df、du 和 fdisk。 df&#xff08;英文全称&#xff1a;disk free&#xff09;&#xff1a;列出文件系统的整体磁盘未使用量du&#xff08;英文全称&#xff1a;disk used&#xff09;&#xff1a;检查磁盘空…

GcExcel:DsExcel 7.0 for Java Crack

GcExcel:DsExcel 7.0-高速 Java Excel 电子表格 API 库 Document Solutions for Excel&#xff08;DsExcel&#xff0c;以前称为 GcExcel&#xff09;Java 版允许您在 Java 应用程序中以编程方式创建、编辑、导入和导出 Excel 电子表格。几乎可以部署在任何地方。 创建、加载、…

[python]python利用pyaudio录制系统声音没有立体声混音怎么录制系统音频

当电脑没有立体声混音导致Python写代码无法使用pyaudio进行录制系统声音怎么办&#xff1f;查阅资料和安装驱动等方法都不行&#xff0c;难道没办法了吗&#xff1f;那为什么电脑其他软件可以做到呢&#xff1f;因此研究了一下pyaudio在没有立体声混音情况下确实无法录制声音&a…

数据模型设计

数据模型设计&#xff0c;可以理解为数据库中的表结构设计。 我们在设计器中创建的数据模型&#xff0c;也称为实体。我们将前端页面中传过来的数据保存到对应的实体中&#xff0c;即为将前端数据保存到了数据库中。 1 、实体与枚举的创建 1 .1 创建供应商 supplier实体 在左…

MySQL基础学习: 由delete和insert操作导致的死锁问题

一、问题复现&#xff1a;表结构 CREATE TABLE user_props (user_id bigint NOT NULL ,prop_key varchar(100) NOT NULL ,prop_value varchar(100) NOT NULL,PRIMARY KEY (user_id,prop_key) )二、死锁测试 &#xff08;1&#xff09;开启两个事务 &#xff08;2&#xff09;…

基于微信小程序的停车预约系统设计与实现

基于微信小程序的停车预约系统设计与实现 项目概述 本项目旨在结合微信小程序、后台Spring Boot和MySQL数据库&#xff0c;打造一套高效便捷的停车预约系统。用户通过微信小程序进行注册、登录、预约停车位等操作&#xff0c;而管理员和超级管理员则可通过后台管理系统对停车…

【python】爬取百度热搜排行榜Top50+可视化【附源码】【送数据分析书籍】

一、导入必要的模块&#xff1a; 这篇博客将介绍如何使用Python编写一个爬虫程序&#xff0c;从斗鱼直播网站上获取图片信息并保存到本地。我们将使用requests模块发送HTTP请求和接收响应&#xff0c;以及os模块处理文件和目录操作。 如果出现模块报错 进入控制台输入&#xff…

【软件工程】走进敏捷开发:灵活、协作、迭代的软件工艺之旅

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; 软件工程 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言&#xff1a; 正文 敏捷开发&#xff08;Agile Development&#xff09; 详细介绍&#xff1a; 优缺点&#xff1a; 优点&#xf…

(2023)PanGu-Draw:通过时间解耦训练和可重用的 Coop-Diffusion 推进资源高效的文本到图像合成

PanGu-Draw: Advancing Resource-Efficient Text-to-Image Synthesis with Time-Decoupled Training and Reusable Coop-Diffusion 公众&#xff1a;EDPJ&#xff08;添加 VX&#xff1a;CV_EDPJ 或直接进 Q 交流群&#xff1a;922230617 获取资料&#xff09; 目录 0. 摘要…

php的laravel权限问题

1.这是我新建的一个路由&#xff0c;然后就是说每新建一个路由都要给他开个权限&#xff01;&#xff01;&#xff01;&#xff01; 2.这个是组内大佬写的&#xff1a; 我们也可以在里面加&#xff0c;也可以在浏览器的页面手动加&#xff08;对我们新手来说还是浏览器的页面…

使用uni-app editor富文本组件设置富文本内容及解决@Ready先于onload执行,无法获取后端接口数据的问题

开始使用富文本组件editor时&#xff0c;不知如何调用相关API设置富文本内容和获取内容&#xff0c;本文将举例详解 目录 一.了解editor组件的常用属性及相关API 1.属性常用说明 2.富文本相关API说明 1&#xff09;editorContext 2&#xff09; editorContext.setContents…

JVM 常用知识和面试题

1. 什么是JVM内存结构&#xff1f; jvm将虚拟机分为5大区域&#xff0c;程序计数器、虚拟机栈、本地方法栈、java堆、方法区&#xff1b; 程序计数器&#xff1a;线程私有的&#xff0c;是一块很小的内存空间&#xff0c;作为当前线程的行号指示器&#xff0c;用于记录当前虚拟…

Avalonia学习(十五)-OxyPlot

今天开始继续Avalonia练习。展示一些样例&#xff0c;尤其是第三方库的使用。 本节&#xff1a;OxyPlot 1.引入OxyPlot.Avalonia 2.项目引入 在Main方法里增加OxyPlotModule.EnsureLoaded()方法调用。 public static void Main(string[] args) {OxyPlotModule.EnsureLoade…

Java线程池ThreadPoolExecutor源码解析

Java线程池ThreadPoolExecutor源码解析 1.ThreadPoolExecutor的构造实现 以jdk8为准&#xff0c;常说线程池有七大参数&#xff0c;通常而言&#xff0c;有四个参数是比较重要的 public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit …