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;
        }

 

posted @ 2015-12-22 22:30  苍穹丶  阅读(1994)  评论(0编辑  收藏  举报