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

  

时间: 2024-08-01 22:28:00

C#面向对象课程12月21日的相关文章

二周第四次课(12月21日)

二周第四次课(12月21日)2.18 特殊权限set_uid2.19 特殊权限set_gid2.20 特殊权限stick_bit2.21 软链接文件2.22 硬连接文件 特殊权限: set_uid (拥有者特殊权限:) #chmod命令: 文件权限属性设置: chmod命令用来变更文件或目录的权限. 在UNIX系统家族里,文件或目录权限的控制分别以; 读取.写入.执行3种一般权限来区分,另有3种特殊权限可供运用. 用户可以使用chmod指令去变更文件与目录的权限, 设置方式采用文字或数字代号皆可

《高级软件测试》实践作业3学习记录12月21日

今天我们熟悉基于JUnit的单元测试脚本开发,编写单元测试并执行测试.今日任务具体要求为基于JUnit框架,结合面向对象程序的特点,针对添加客户模块,根据在阶段一设计得到的测试用例,编写单元测试脚本,执行脚本,记录发现的缺陷. 分工如下: 杨智超像大家介绍JUnit的基本概念和使用: 汪佳佩整理在第一阶段编写好的测试用例,协助何阳寅完成测试脚本: 何阳寅执行测试脚本,报告发现的缺陷,记录和管理缺陷: 叶瑞结合大家的意见撰写测试执行报告,说明测试环境,测试的过程,对测试工作产生的缺陷进行分析.

12月21日笔记

//输出 Console.WriteLine("这是一行文字");  自动回车的 Congsole.Write("");   不自动回车 注意: 1.大小写敏感.(快捷键操作) 2.括号,引号,分号都是英文状态下的符号. 3.结尾不要忘记写分号. //输入 string s = Console.ReadLine() 如何拼接字符串. Console.WriteLine("你的用户名是"+u+",密码是"+p+",请确

2015年12月21日 my.cnf 配置

[client]port =36000#socket =/tmp/mysql.socketdefault-character-set=utf8 [mysqld]#datadir=/var/lib/mysqlport =36000#socket =/tmp/mysql.socket#pid-file =/home/mysql/data/mysql.pid#datadir =/home/mysql/dataskip-external-lockingskip-name-resolvecharacter

最新JavaScript、Ajax典藏级学习资料下载分类汇总 (2011年12月21日更新)

其他网站开发相关资料            超强HTML和xhtml,CSS精品学习资料下载汇总                                               最新html5以及css3资源下载汇总                                               Dreamweaver 教程汇总 索引: JavaScript初学者及参考必备 Javascript高级进阶 AJAX (Asynchronous JavaScript and

12月21日

destroy_all and delete_all Destroy the records by instantiating each record and calling its #destroy method.在删除前实例化每条记录,并回调callback execution. ?? :如果想要快速删除,如果这个动作不涉及associations or callbacks, use delete_all instead. 豆知识: Transaction: the process of d

Web--js高级--12月21日随笔

问题: 在拖拽元素的时候,如果元素的内部加了文字或者图片,拖拽效果会失灵? 因为浏览器会给文字和图片一个默认行为,当文字和图片被选中的时候,会有一个拖拽的效果,即使我们没有人为他添加.所以当我们点击这个元素拖拽时,有可能选中文字或图片,触发浏览器天生给的那个行为,从而导致我们写的那个拖拽效果失灵. obj.onmousedown=function(ev){ var ev=ev||window.event; var _this=this; var x=ev.clientX-this.offsetL

2019年12月21日

昨天晚上六点吃完晚饭就眯了一会儿,一眯就到了七点半,爬起床去健身房,到了才发现关门了,不是说好24小时营业么.而且旁边里面还有人,但是里面的人对敲玻璃毫无反应.故健身计划泡汤咯. 回到寝室,打开手机准备学习,师傅发了一些聊天记录给我看.其实无非是女孩子说男孩子家穷,开始觉得不平衡,但是又觉得男孩子对她好,又觉得男孩子太听家里的话.反正我觉得听着就矛盾,何必勒.最后师傅说没钱就不要谈恋爱什么的.我觉得现在师傅已经变成那种失去理智的人了,或者是阶级观念我们已经产生,我是站在穷孩子的角度,而她是站在优

今天是12月7日,开始发售春运火车票!

自2014年12月1日起,铁路互联网售票.电话订票的预售期由20天延长至60天.具体为:12月1日,预售期由现行20天延长至30天:12月2日至12月6日,预售期每天再比上一日延长6天:12月7日开始发售2015年春运第一天(2015年2月4日)的车票.其他售票方式按错后2天的原则同步延长. 2014年12月5日至12月20日,铁路部门将在互联网上集中受理2015年1月15日至3月15日期间的学生团体往返票.12月21日起,学生可以通过互联网.电话.窗口.自动售票机等各个渠道购买2015年3月1