C#面向对象--练习题
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 = 1; jgt.Name = "张三"; jgt.Degree = 98; #endregion
练习:输入学生人数,输入学生学号、姓名、分数
根据分数由高到低进行排序并打印。(利用结构体和集合结合应用)
//主函数:一个程序有且只有一个 static void Main(string[] args) { //1、输入学生信息 Console.Write("请输入学生人数:"); int renshu = int.Parse(Console.ReadLine()); jiegouti[] shuzu=new jiegouti[renshu];//根据人数来定义数组容器长度 for (int i = 0; i < renshu; i++)//根据人数去循环输入学生信息 { //jiegouti jgt = new jiegouti();//声明一个jiegouti的类型 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) //等量代换 { 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 = 0; i < shuzu.Length - 1; i++) { for (int j = i + 1; 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 = 1; s.Name = "张三"; s.Degree = 88; Console.Write(s.Name); Console.ReadLine();
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 类;声明一个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)//在这改为使用ArrayList集合,使用时要把集合里的参数强制转换成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; }