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

C#,《小白学程序》第三课:类、类数组与排序

类class把数值与功能巧妙的进行了结合,是编程技术的主要进步。

下面的程序你可以确立 分数 与 姓名 之间关系,并排序。

1 文本格式


/// <summary>
/// 同学信息类
/// </summary>
public class Classmate
{
    /// <summary>
    /// 学号
    /// </summary>
    public int Id;
    /// <summary>
    /// 姓名
    /// </summary>
    public string Name;
    /// <summary>
    /// 性别
    /// </summary>
    public string Gender;
    /// <summary>
    /// 成绩
    /// </summary>
    public float Score;

    /// <summary>
    /// 创建一个同学信息
    /// </summary>
    /// <param name="id"></param>
    /// <param name="name"></param>
    /// <param name="gender"></param>
    /// <param name="score"></param>
    public Classmate(int id, string name, string gender, float score)
    {
        Id = id;
        Name = name;
        Gender = gender;
        Score = score;
    }

    /// <summary>
    /// 同学信息类,除了存储信息,还可以做点什么!
    /// </summary>
    /// <returns></returns>
    public string Dao()
    {
        return Name + " 到!";
    }
}

/// <summary>
/// 记录同学信息的一个数组
/// 第三课是放在 Button3_Click内的第五课需要用到这个数据,
/// 挪到了这里(走廊),公用!
/// </summary>
Classmate[] mates = {
       new Classmate( 1, "失败后", "男", 149 ),
       new Classmate( 5, "基础", "男",96 ),
       new Classmate( 6, "苏轼加", "男",107),
       new Classmate( 3, "叙述", "男",110),
       new Classmate( 8, "回避", "女",119 ),
       new Classmate( 2, "加盐", "女",123 ),
       new Classmate( 4, "安静", "女",156 ),
       new Classmate( 7, "比铭记", "男",142 ),
};

/// <summary>
/// 《小白学程序》第三课:类、类数组与排序
/// 前面简单的数组,存在一个明显的问题:
/// 排序之后,不知道成绩对应哪个同学?
/// 本节课,新学习一个概念 类class,
/// 类可以存储更多的信息;
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button3_Click(object sender, EventArgs e)
{
    int n = 8;

    // #1 输出 同学信息:学号,姓名,成绩
    StringBuilder sb = new StringBuilder();
    sb.AppendLine("未排序之前的成绩:<br>");
    for (int i = 0; i < n; i++)
    {
        // 未使用类(class)之前的原来的学法
        //sb.AppendLine(i + ": " + score[i - 1] + "<br>");
        sb.AppendLine(mates[i].Id + " " + mates[i].Name + ": " + mates[i].Score + "<br>");
    }
    sb.AppendLine("<br>");

    // #2 排序
    for (int i = 0; i < n - 1; i++)
    {
        for (int j = i + 1; j < n; j++)
        {
            // 比较类成员的成绩(属性)
            if (mates[i].Score > mates[j].Score)
            {
                // 类成员的交换
                Classmate stemp = mates[i];
                mates[i] = mates[j];
                mates[j] = stemp;
            }
        }
    }

    sb.AppendLine("从小到大排序之后的成绩:<br>");
    // #3 表格输出
    // 前面的数据输出比较简单;这里学习用 表格输出;
    // style td 控制表格的内空隙(padding)大小
    sb.AppendLine("<style>td { padding:10px; } </style>");
    // table 表格;width 宽度;border 表格线
    sb.AppendLine("<table width='420' border=1>");
    for (int i = 0; i < n; i++)
    {
        //sb.AppendLine(i + ": " + score[i - 1] + "<br>");
        sb.AppendLine("<tr><td>" + mates[i].Id + "</td><td>" + mates[i].Name + "</td><td>" + mates[i].Score + "</td><td>" + mates[i].Dao() + "</td></tr>");
    }
    sb.AppendLine("</table>");

    webBrowser1.DocumentText = sb.ToString();
}
 

2 代码格式


/// <summary>
/// 同学信息类
/// </summary>
public class Classmate
{/// <summary>/// 学号/// </summary>public int Id;/// <summary>/// 姓名/// </summary>public string Name;/// <summary>/// 性别/// </summary>public string Gender;/// <summary>/// 成绩/// </summary>public float Score;/// <summary>/// 创建一个同学信息/// </summary>/// <param name="id"></param>/// <param name="name"></param>/// <param name="gender"></param>/// <param name="score"></param>public Classmate(int id, string name, string gender, float score){Id = id;Name = name;Gender = gender;Score = score;}/// <summary>/// 同学信息类,除了存储信息,还可以做点什么!/// </summary>/// <returns></returns>public string Dao(){return Name + " 到!";}
}/// <summary>
/// 记录同学信息的一个数组
/// 第三课是放在 Button3_Click内的第五课需要用到这个数据,
/// 挪到了这里(走廊),公用!
/// </summary>
Classmate[] mates = {new Classmate( 1, "失败后", "男", 149 ),new Classmate( 5, "基础", "男",96 ),new Classmate( 6, "苏轼加", "男",107),new Classmate( 3, "叙述", "男",110),new Classmate( 8, "回避", "女",119 ),new Classmate( 2, "加盐", "女",123 ),new Classmate( 4, "安静", "女",156 ),new Classmate( 7, "比铭记", "男",142 ),
};/// <summary>
/// 《小白学程序》第三课:类、类数组与排序
/// 前面简单的数组,存在一个明显的问题:
/// 排序之后,不知道成绩对应哪个同学?
/// 本节课,新学习一个概念 类class,
/// 类可以存储更多的信息;
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button3_Click(object sender, EventArgs e)
{int n = 8;// #1 输出 同学信息:学号,姓名,成绩StringBuilder sb = new StringBuilder();sb.AppendLine("未排序之前的成绩:<br>");for (int i = 0; i < n; i++){// 未使用类(class)之前的原来的学法//sb.AppendLine(i + ": " + score[i - 1] + "<br>");sb.AppendLine(mates[i].Id + " " + mates[i].Name + ": " + mates[i].Score + "<br>");}sb.AppendLine("<br>");// #2 排序for (int i = 0; i < n - 1; i++){for (int j = i + 1; j < n; j++){// 比较类成员的成绩(属性)if (mates[i].Score > mates[j].Score){// 类成员的交换Classmate stemp = mates[i];mates[i] = mates[j];mates[j] = stemp;}}}sb.AppendLine("从小到大排序之后的成绩:<br>");// #3 表格输出// 前面的数据输出比较简单;这里学习用 表格输出;// style td 控制表格的内空隙(padding)大小sb.AppendLine("<style>td { padding:10px; } </style>");// table 表格;width 宽度;border 表格线sb.AppendLine("<table width='420' border=1>");for (int i = 0; i < n; i++){//sb.AppendLine(i + ": " + score[i - 1] + "<br>");sb.AppendLine("<tr><td>" + mates[i].Id + "</td><td>" + mates[i].Name + "</td><td>" + mates[i].Score + "</td><td>" + mates[i].Dao() + "</td></tr>");}sb.AppendLine("</table>");webBrowser1.DocumentText = sb.ToString();
}

你非常幸运读到的是一本真正的程序教程。

相关文章:

C#,《小白学程序》第三课:类、类数组与排序

类class把数值与功能巧妙的进行了结合&#xff0c;是编程技术的主要进步。 下面的程序你可以确立 分数 与 姓名 之间关系&#xff0c;并排序。 1 文本格式 /// <summary> /// 同学信息类 /// </summary> public class Classmate { /// <summary> /…...

史上最全AP、mAP详解与代码实现

文章目录 前言一、mAP原理1、mAP概念2、准确率3、精确率4、召回率5、AP: Average Precision 二、mAP0.5与mAP0.5:0.951、mAP0.52、mAP0.5:0.95 三、mAP代码实现1、真实标签json文件格式2、模型预测标签json文件格式3、mAP代码实现4、mAP结果显示 四、模型集成mAP代码1、模型mai…...

百数应用中心——生产制造管理解决方案解决行业难题

传统生产制造业面临着许多挑战&#xff0c;其中一些主要问题包括效率低下、交期压力大、需求预测不准确、生产模式复杂、异常响应慢、库存高和计划脱节等。这些问题不仅影响了生产效率和质量&#xff0c;也导致了不必要的成本和客户满意度下降。 生产制造管理应用对于企业的生产…...

《存储IO路径》专题:IO虚拟化初探

大家好&#xff0c;欢迎来到今天的科技小课堂。今天我们要聊聊的是一项非常有趣且实用的技术——I/O虚拟化&#xff08;Input/Output Virtualization&#xff0c;简称IOV&#xff09;。想象一下&#xff0c;如果把物理硬件资源比作一道丰盛的大餐&#xff0c;那么IOV就是那位神…...

Springboot2.0快速入门(第一章)

目录 一&#xff0c;SpringBoot简介1.1&#xff0c;回顾什么是Spring1.2&#xff0c;Spring是如何简化Java开发的1.3&#xff0c;什么是SpringBoot 二&#xff0c;Hello&#xff0c;World2.1&#xff0c;准备工作2.2&#xff0c;创建基础项目说明2.3&#xff0c;创建第一个Hell…...

Flink流批一体计算(17):PyFlink DataStream API之StreamExecutionEnvironment

目录 StreamExecutionEnvironment Watermark watermark策略简介 使用 Watermark 策略 内置水印生成器 处理空闲数据源 算子处理 Watermark 的方式 创建DataStream的方式 通过list对象创建 ​​​​​​使用DataStream connectors创建 使用Table & SQL connectors…...

javeee spring cglib动态代理

cglib动态代理 依赖 <dependency><groupId>cglib</groupId><artifactId>cglib-nodep</artifactId><version>3.2.4</version></dependency>代理类 package com.test.cglibProxy;import net.sf.cglib.proxy.Enhancer; import …...

【Docker】Dockerfile介绍

Dockerfile是一个文本文件&#xff0c;其中包含了一系列的指令&#xff0c;用于构建Docker镜像。这些指令可以用来自动化镜像的构建过程&#xff0c;并创建自定义镜像。 以下是一些常用的Dockerfile指令及其功能&#xff1a; FROM&#xff1a;指定基础镜像。这是Dockerfile中…...

两个hdfs之间迁移传输数据

本文参考其他大数据大牛的博文做了整理和实际验证&#xff0c;主要解决hdfs跨集群复制/迁移问题。 在hdfs数据迁移时总会涉及到两个hdfs版本版本问题&#xff0c;致力解决hdfs版本相同和不同两种情况的处理方式&#xff0c;长话短说&#xff0c;进正文。 distcp: hadoop自带的…...

C++ 缺失的数字

有n个数字&#xff0c;值就是1~n&#xff0c;现发现丢失了2个数字&#xff0c;请你根据剩余的n-2个数字&#xff0c;编程计算一下&#xff0c;缺失的是哪两个数字呢&#xff1f; &#xff08;使用桶排&#xff0c;标记输入过的数字&#xff09; #include<bits/stdc.h> us…...

JVM,JRE和JDK的区别

JVM&#xff0c;JRE和JDK的区别 JVM(Java Virtual Machine&#xff0c;Java虚拟机)JREJRE目录结构 JDK JVM(Java Virtual Machine&#xff0c;Java虚拟机) Java程序的跨平台特性主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上运行&#xff0c;Java虚拟机中…...

合宙Air724UG LuatOS-Air LVGL API控件--日历 (Calendar)

日历 (Calendar) LVGL 提供了一个用来选择和显示当前日期的日历控件。 示例代码 – 高亮显示的日期 highlightDate lvgl.calendar_date_t() – 日历点击的回调函数 – 将点击日期设置高亮 function event_handler(obj, event) if event lvgl.EVENT_VALUE_CHANGED then da…...

[python]问题:pandas处理excel里的多个sheet

Pandas 可以很容易地处理 Excel 文件中的多个工作表。首先,你需要安装 pandas 和 openpyxl(用于读取 .xlsx 文件)库。你可以使用以下命令安装这两个库: pip install pandas openpyxl接下来,你可以使用以下代码来处理 Excel 文件中的多个工作表: import pandas as pd# 读…...

[MySQL] MySQL基础操作汇总

文章目录 前言1.数据库概述1.1 数据库相关概念1.2登录MySQL&#xff1a;1.3 MySQL常用命令1.4表&#xff1a;1.5SQL语句分类&#xff1a; 2.CRUD操作2.1 DQL1.基础查询基础查询&#xff08;简单查询&#xff09;条件查询&#xff1a;排序查询&#xff1a;分组查询&#xff1a;分…...

C语言每日一题 ---- 打印从1到最大的n位数(Day 1)

本专栏为c语言练习专栏&#xff0c;适合刚刚学完c语言的初学者。本专栏每天会不定时更新&#xff0c;通过每天练习&#xff0c;进一步对c语言的重难点知识进行更深入的学习。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;C语言天天练 &#x…...

2023-08-23 LeetCode每日一题(统计点对的数目)

2023-08-23每日一题 一、题目编号 1782. 统计点对的数目二、题目链接 点击跳转到题目位置 三、题目描述 给你一个无向图&#xff0c;无向图由整数 n &#xff0c;表示图中节点的数目&#xff0c;和 edges 组成&#xff0c;其中 edges[i] [ui, vi] 表示 ui 和 vi 之间有一…...

LLMs之Code:SQLCoder的简介、安装、使用方法之详细攻略

LLMs之Code&#xff1a;SQLCoder的简介、安装、使用方法之详细攻略 目录 SQLCoder的简介 1、结果 2、按问题类别的结果 SQLCoder的安装 1、硬件要求 2、下载模型权重 3、使用SQLCoder 4、Colab中运行SQLCoder 第一步&#xff0c;配置环境 第二步&#xff0c;测试 第…...

数学建模(四)整数规划—匈牙利算法

目录 一、0-1型整数规划问题 1.1 案例 1.2 指派问题的标准形式 2.2 非标准形式的指派问题 二、指派问题的匈牙利解法 2.1 匈牙利解法的一般步骤 2.2 匈牙利解法的实例 2.3 代码实现 一、0-1型整数规划问题 1.1 案例 投资问题&#xff1a; 有600万元投资5个项目&…...

openGauss学习笔记-47 openGauss 高级数据管理-权限

文章目录 openGauss学习笔记-47 openGauss 高级数据管理-权限47.1 语法格式47.2 参数说明47.3 示例 openGauss学习笔记-47 openGauss 高级数据管理-权限 数据库对象创建后&#xff0c;进行对象创建的用户就是该对象的所有者。数据库安装后的默认情况下&#xff0c;未开启三权分…...

开始MySQL之路——MySQL 事务(详解分析)

MySQL 事务概述 MySQL 事务主要用于处理操作量大&#xff0c;复杂度高的数据。比如说&#xff0c;在人员管理系统中&#xff0c;你删除一个人员&#xff0c;你即需要删除人员的基本资料&#xff0c;也要删除和该人员相关的信息&#xff0c;如信箱&#xff0c;文章等等&#xf…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

Unity UGUI Button事件流程

场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...

CSS 工具对比:UnoCSS vs Tailwind CSS,谁是你的菜?

在现代前端开发中&#xff0c;Utility-First (功能优先) CSS 框架已经成为主流。其中&#xff0c;Tailwind CSS 无疑是市场的领导者和标杆。然而&#xff0c;一个名为 UnoCSS 的新星正以其惊人的性能和极致的灵活性迅速崛起。 这篇文章将深入探讨这两款工具的核心理念、技术差…...