zoukankan      html  css  js  c++  java
  • C#面向对象课程12月21日

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

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

    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("
    ");
                }
                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("
    ");
               }
               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;
            }
        }
    }
    

      

  • 相关阅读:
    括号匹配问题:判断括号式子是否匹配。如{[()]}是匹配的,而{[[])}是不匹配的。
    回文判断的两种方法
    将A链表中的奇数元素与偶数元素拆成两个链表A和B,A中是奇数元素,B是偶数元素。要求拆除后保持链表元素原来的相对位置
    修改kail linux的IP地址等网络信息
    VXDIAG SUBARU SSM III错误许可解决方案
    Mini ACDP更新CAS3数据提示和指南
    thinkphp框架中find()和select()的区别
    PHP中=>和->以及::的用法
    Golang 开发规范(JD )
    JD MySQL数据库开发规范(绝密,企业级开发中Mysql规范)
  • 原文地址:https://www.cnblogs.com/xuankai1987/p/5065032.html
Copyright © 2011-2022 走看看