public class Program
{
//用户自定义:我们自己定义这种数据类型
public struct jiegouti// 结构体前面加上public, 可供外界访问
{
public int Code;//成员变量
public string Name;//成员
public double Degree;//成员
}
static void Main(string[] args)
{
#region==结构体变量定义==
jiegouti jgt = new jiegouti();//根据jiegouti类型,定义一个结构体变量。
jgt.Code = ;
jgt.Name = "张三";
jgt.Degree = ;
#endregion

练习:输入学生人数,输入学生学号、姓名、分数

根据分数由高到低进行排序并打印。(利用结构体和集合结合应用)

//主函数:一个程序有且只有一个
static void Main(string[] args)
{
//1、输入学生信息
Console.Write("请输入学生人数:");
int renshu = int.Parse(Console.ReadLine());
jiegouti[] shuzu=new jiegouti[renshu];//根据人数来定义数组容器长度
for (int i = ; i < renshu; i++)//根据人数去循环输入学生信息
{
//jiegouti jgt = new jiegouti();//声明一个jiegouti的类型
Console.Write("请输入第{0}个学生的学号:",i+);//
shuzu[i].Code=int.Parse(Console.ReadLine());
Console.Write("请输入第{0}个学生的姓名:",i+);
shuzu[i].Name=Console.ReadLine();
Console.Write("请输入第{0}个学生的分数:",i+);
shuzu[i].Degree=double.Parse(Console.ReadLine()); //将输入的信息,存进数组里
}
//2、排序
for (int i = ; i < renshu-; i++)
{
for (int j = i+; j < renshu ;j++ )
{
if (shuzu[i].Degree < shuzu[j].Degree)
//等量代换
{
jiegouti zhong = new jiegouti();
zhong = shuzu[i];
shuzu[i] = shuzu[j];
shuzu[j] = zhong;
}
}
}//3、输出
Console.WriteLine("************成绩如下************");
Console.WriteLine(" 学号 姓名 分数");
foreach(jiegouti jgt in shuzu)
{
Console.Write(" ");
Console.Write(jgt.Code);
Console.Write(" ");
Console.Write(jgt.Name);
Console.Write(" ");
Console.Write(jgt.Degree);
Console.Write("\n");
} Console.ReadLine();
}

冒泡排序写成带返回的函数:

 public class Program
{
//用户自定义:我们自己定义这种数据类型
public struct jiegouti// 结构体前面加上public, 可供外界访问
{
public int Code;//成员变量
public string Name;//成员
public double Degree;//成员
}
//冒泡排序:输入参数;形参
public jiegouti[] paixu(jiegouti[] shuzu)
{
for (int i = ; i < shuzu.Length - ; i++)
{
for (int j = i + ; j < shuzu.Length; j++)
{
if (shuzu[i].Degree < shuzu[j].Degree)
{//等量代换
jiegouti zhong = new jiegouti();
zhong = shuzu[i];
shuzu[i] = shuzu[j];
shuzu[j] = zhong;
}
}
}
return shuzu;
}
       //2、排序
shuzu = new Program().paixu(shuzu);// shuzu是数组变量,Program是一个类(可以换成其他名的类)

新建一个类,用类的方法

新建一个Student类

在main函数下输入,因为使用类,每次要对数组里的值初始化才能使用

static void Main(string[] args)
{
//面向对象 必须初始化
Student s = new Student();//s是Student类型造出来的变量叫做对象 面向对象思想
s.Code = ;
s.Name = "张三";
s.Degree = ; Console.Write(s.Name); Console.ReadLine();
 Console.Write("请输入学生的人数:");
int renshu = int.Parse(Console.ReadLine());
ArrayList shuzu = new ArrayList();//根据人数定义数组容器 for (int i = ; i < renshu; i++)//根据人数去循环输入学生信息
{
Student s = new Student();//这里的student改成新建的Student 类;声明一个Student类型
Console.Write("请输入第{0}个学生的学号:", i + );
s.Code = int.Parse(Console.ReadLine());
Console.Write("请输入第{0}个学生的姓名:", i + );
s.Name = Console.ReadLine();
Console.Write("请输入第{0}个学生的分数:", i + );
s.Degree = double.Parse(Console.ReadLine()); //输入信息,存入数组里 shuzu.Add(s);//添加进集合里
}
//2.排序
shuzu = new Program().paixu(shuzu); //3.输出
Console.WriteLine("***********成绩如下***********");
Console.WriteLine(" 学号 姓名 分数");
foreach (Student s in shuzu)//队列集合,执行一遍定义结构体变量的数组
{
Console.Write(" ");
Console.Write(s.Code);
Console.Write(" ");
Console.Write(s.Name);
Console.Write(" ");
Console.Write(s.Degree);
Console.Write("\n");
}
Console.ReadLine();
}
//进行冒泡排序
public ArrayList paixu(ArrayList shuzu)//在这改为使用ArrayList集合,使用时要把集合里的参数强制转换成Student类型,才能进行
{
for (int i = ; i < shuzu.Count - ; i++)
{
for (int j = i + ; i < shuzu.Count; j++)
{
if (((Student)shuzu[i]).Degree < ((Student)shuzu[j]).Degree)//
{//等量代换
Student zhong = new Student();//这里的student改成新建的Student 类
zhong = (Student)shuzu[i];
shuzu[i] = shuzu[j];//是object类型
shuzu[j] = zhong; }
}
}
return shuzu;
}

最新文章

  1. Jquery、简单的下拉列表、网页左部导航菜单
  2. android自定义控件之滚动广告条
  3. 几个模式识别和计算机视觉相关的Matlab工具箱
  4. Delphi COM编程学习笔记(1)
  5. Mahout快速入门教程
  6. meteor学习
  7. 开发者工具console
  8. Java Enum使用演示样品枚举
  9. 【Android基础】listview控件的使用(2)-------继承自ListActivity的普通listview
  10. 软件工程工具学习(1)---Visio
  11. 华为笔记HOSTS,便于访问云端存储
  12. Java 基于WebMagic 开发的网络爬虫
  13. 程序配置的原则和实践以及 Spring Boot 支持方式
  14. Vagrant将下载好的镜像装载到本地中
  15. C#字符串转换为float
  16. PowerDesigner的Name和Code不同步设置
  17. Spring中的destroy-method方法
  18. Qt中容器类应该如何存储对象(对象加入到容器时会发生拷贝,容器析构时,容器内的对象也会析构)
  19. 在WebStorm中使用CSScomb
  20. UITableViewCell 取消选中的蓝色背景

热门文章

  1. 缺氧debug模式开启及功能
  2. visual studio code 调试reactjs
  3. 如何在CentOS 7 / Fedora 31/30/29上安装ELK Stack
  4. 面试问题:Vuejs如何实现双向绑定
  5. small标签
  6. LintCode_67 二叉树中序遍历
  7. 【JZOJ4744】【NOIP2016提高A组模拟9.2】同余
  8. Leetcode806.Number of Lines To Write String写字符串需要的行数
  9. js(jquery)鼠标移入移出事件时,出现闪烁、隐藏显示隐藏显示不停切换的情况
  10. HDU 4193