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

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 + ": " + scorei - 1 + "<br>");

sb.AppendLine(matesi.Id + " " + matesi.Name + ": " + matesi.Score + "<br>");

}

sb.AppendLine("<br>");

// #2 排序

for (int i = 0; i < n - 1; i++)

{

for (int j = i + 1; j < n; j++)

{

// 比较类成员的成绩(属性)

if (matesi.Score > matesj.Score)

{

// 类成员的交换

Classmate stemp = matesi;

matesi = matesj;

matesj = 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 + ": " + scorei - 1 + "<br>");

sb.AppendLine("<tr><td>" + matesi.Id + "</td><td>" + matesi.Name + "</td><td>" + matesi.Score + "</td><td>" + matesi.Dao() + "</td></tr>");

}

sb.AppendLine("</table>");

webBrowser1.DocumentText = sb.ToString();

}

2 代码格式

cs 复制代码
/// <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();
}

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

相关推荐
三品吉他手会点灯4 小时前
C语言学习笔记 - 50.流程控制4 - 流程控制为什么非常非常重要
c语言·开发语言·笔记·学习
sunfdf6 小时前
知识学习场景下的智能应用实践大纲
学习
在放️7 小时前
Python 爬虫 · 第三方代理接入与合规使用
开发语言·爬虫·python
KANGBboy7 小时前
java知识五(继承)
java·开发语言
c++之路7 小时前
Bazel C++ 构建系列文档(三):构建第一个 C++ 项目
开发语言·c++
AI人工智能+电脑小能手7 小时前
【大白话说Java面试题 第117题】【并发篇】第17题:线程有几种状态,之间如何转换?
java·开发语言·面试
MartinYeung57 小时前
[论文学习]重新思考大型语言模型忘却目标:梯度视角与超越
人工智能·学习·语言模型
十月的皮皮8 小时前
C语言学习笔记20260615-有序升序序列合并
c语言·笔记·学习
JAVA面经实录9178 小时前
前端系统化学习计划表(含完整知识思维导图)
前端·学习
聚名网8 小时前
域名net,com,cn有区别吗?有哪些不同呢?
服务器·开发语言·php