• 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("
    ");
                }
    
                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("
    ");
               }
               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;
            }
  • 相关阅读:
    停止Java线程,小心interrupt()方法
    SLG手游Java服务器的设计与开发——架构分析
    大数据Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解
    【转】阿里云主机购买使用教程
    使用 Apache MINA 开发高性能网络应用程序
    浅谈Java的Mina框架传递对象
    解析Mina代码三部曲
    java 子类继承父类 -- 重写、覆盖
    经度之战
    [USACO1.3]虫洞wormhole
  • 原文地址:https://www.cnblogs.com/huluobozu/p/5068394.html
Copyright © 2020-2023  润新知