标签:
一、练习题:使用结构体输入学员信息,学号 姓名 分数
排序之后按分数从高到低输出
class Program { //用户自定义,我们自己定义这种数据类型 public struct student { public int Code;//成员变量 public string Name;//成员 public double Degree;//成员 }
//主函数,一个程序有且只有一个 static void Main(string[] args) { #region==结构体变量定义== //student s = new student();//根据student类型,定义了一个结构体变量 //s.Code = 1; //s.Name = "张三"; //s.Degree = 87; #endregion //1.输入学生信息 Console.Write("请输入学生的人数:"); int renshu = int.Parse(Console.ReadLine()); student[] shuzu = new student[renshu];//根据人数定义数组容器 for (int i = 0; i < renshu; i++)//根据人数去循环输入学生信息 { student s = new student(); Console.Write("请输入第{0}个学生的学号:", i + 1);//索引为零时,是第一个,显示要加一 shuzu[i].Code = int.Parse(Console.ReadLine());//把信息存进数组,再转换 Console.Write("请输入第{0}个学生的姓名:", i + 1); shuzu[i].Name = Console.ReadLine(); Console.Write("请输入第{0}个学生的分数:", i + 1); shuzu[i].Degree = double.Parse(Console.ReadLine()); } //2.排序 for (int i = 0; i < renshu-1; i++) { for (int j = i + 1; j < renshu; j++) { if (shuzu[i].Degree < shuzu[j].Degree) {//等量代换 student zhong= new student(); zhong = shuzu[i]; shuzu[i] = shuzu[j]; shuzu[j]=zhong; } } } //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();
运行结果如下:
方法2:冒泡排序写成带返回值的函数,代码如下:
public struct student//结构体前面要加上public,可以供外界访问 { public int Code;//成员变量 public string Name;//成员 public double Degree;//成员 } public student[] paixu(student[] shuzu) { for (int i = 0; i < shuzu.Length - 1; i++) { for (int j = i + 1; i < shuzu.Length; j++) { if (shuzu[i].Degree < shuzu[j].Degree) { student zhong = new student(); zhong = shuzu[i]; shuzu[i] = shuzu[j]; shuzu[j] = zhong; } } } return shuzu; }
//2.排序 shuzu = new Program().paixu(shuzu);
这里的program也可以换成其他的类名。
方法3:新建一个类,用类的方法
新建一个Student类:
在main函数下输入(因为使用类,每次要对数组里的值初始化才能使用,在这改为使用ArrayList集合,使用时要把集合里的参数强制转换成Student类型):
//1.输入学生信息 Console.Write("请输入学生的人数:"); int renshu = int.Parse(Console.ReadLine()); ArrayList shuzu = new ArrayList(); for (int i = 0; i < renshu; i++)//根据人数去循环输入学生信息 { Student s = new Student();//这里的student改成新建的Student 类 Console.Write("请输入第{0}个学生的学号:", i + 1);//索引为零时,是第一个,显示要加一 s.Code = int.Parse(Console.ReadLine());//把信息存进数组,再转换 Console.Write("请输入第{0}个学生的姓名:", i + 1); s.Name = Console.ReadLine(); Console.Write("请输入第{0}个学生的分数:", i + 1); 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)//这里的student改成新建的Student 类 { for (int i = 0; i < shuzu.Count - 1; i++) { for (int j = i + 1; 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; } } }
标签:
原文地址:http://www.cnblogs.com/xuankai1987/p/5065032.html