码迷,mamicode.com
首页 > Windows程序 > 详细

C#面向对象课程12月21日

时间:2015-12-21 23:32:33      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:

一、练习题:使用结构体输入学员信息,学号  姓名  分数

排序之后按分数从高到低输出

 

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

 

  

 

C#面向对象课程12月21日

标签:

原文地址:http://www.cnblogs.com/xuankai1987/p/5065032.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!