• C#面向对象


    int定义的变量只能放整形数据,string定义的变量只能放字符串数据,它们是内置数据类型;
    
    struct{},class(类)都是用户定义的数据类型,可以放任意类型数据。
    
    用数据类型定义变量就像用模板规范的创建了一个变量,使其不能任意的存储数据,比如int类型的变量无法存储string类型的数据;
    
    所有的数据类型(intstring,struct出来的Student)就像各种各样的模板,struct出来的Student是我们自己创造的数据类型模板。
    
     
    
    class模板可以写函数,因此比struct模板更高级,class定义的变量我们叫做对象。
    
    面向对象是一种思想,一种思路。
    
    在面向对象编程中,类是最小单位,是类与类之间相互交互。
    
    以class为模板创建出来的数据类型,我们叫做对象。
    
    变量的作用范围:public(在项目所有地方都可以用),private只能在类的内部使用。
    
    不能用class创建的对象创建数组(struct可以),可以创建集合(Array)。
    
    每次创建对象需要用new开辟空间。struct可以自动开辟空间。
    
    object是所有数据类型的基类:就像生物对于所有动物、植物、微生物等等。
    
    小知识点:缩放代码:#region endregion 
    蓝块:成员变量 
    紫块:成员方法
    
    编程时,右击函数名->转到定义
    
    1.范例:通过struct数组存储、处理学生信息,按如下要求从控制台循环录入10个同学的信息跟成绩(学号,姓名,C语言分数)使用结构体  ,在控制台打印本班的总分和平均分,并打印本班最高分、最低分的学生信息,按成绩高低打印本班成绩册并排出名次,要求使用结构体,自定义函数,数组来完成本题。
    
    复制代码
    #region==学生课程题目==
            struct student
            {
                public string code;
                public string name;
                public decimal degree;
            }
    
            static void Main(string[] args)
            {
                Console.Write("请输入人数:");
                int n = int.Parse(Console.ReadLine().ToString());
    
                decimal sumfen=0, avg=0, max=0, min=0;
                student[] sumstu = new student[n];
                //根据所输入人数进行循环录入
                for (int i = 0; i < n; i++)
                {
                    Console.WriteLine("请输入第"+(i+1)+"个学生的信息");
                    Console.WriteLine("学号   姓名  c语言分数,以tab键分隔");
                    string s = Console.ReadLine();
                    string[] sarr = s.Split(new char[]{'	'});//使用split按照分隔符进行分隔
    
                    sumstu[i].code = sarr[0];
                    sumstu[i].name = sarr[1];
                    sumstu[i].degree = decimal.Parse(sarr[2]);
    
                    sumfen += sumstu[i].degree;
                }
    
    
    
                Console.WriteLine("****************************************");
                Console.WriteLine("总分:"+sumfen.ToString());
                avg = sumfen / n;
                Console.WriteLine("平均分:"+avg.ToString());
    
                //冒泡排序
                for (int i = 0; i < n-1; i++)
                {
                    for (int j = i+1; j < n; j++)
                    {
                        if (sumstu[i].degree < sumstu[j].degree)
                        {
                            Student zhong = new Student();
                            zhong = sumstu[i];
                            sumstu[i] = sumstu[j];
                            sumstu[j] = zhong;
                        }
                    }
                }
    
                Console.WriteLine("最高分:"+sumstu[0].degree.ToString());
                Console.WriteLine("最低分:"+sumstu[n-1].degree.ToString());
    
                Console.WriteLine("本班成绩列表如下:");
                Console.WriteLine("****************************************");
                Console.WriteLine("名次   学号  姓名  成绩");
                for (int i = 1; i <= n; i++)
                {
                    Console.WriteLine(i+"	"+sumstu[i-1].code+"	"+sumstu[i-1].name+"	"+sumstu[i-1].degree);
                }
    
                    Console.ReadLine();
            }
    复制代码
     
    
    2.通过Array集合来处理学生信息
    
    复制代码
    class Program
        {
            //用Array来存储十个学生信息,(不如上题将结构体放在数组里方便,只是练习一下Array的使用)
    
            //定义学生信息结构体
            public struct Student
            { 
                public string sno;
                public string name;
                public int degree;
            }
    
            static void Main(string[] args)
            {
                //定义Student元素类型的Array,存储10个学生信息
                Array myArr = Array.CreateInstance(typeof(Student), 10);
                for (int i = 0; i < myArr.Length; i++)
                {
                    Student aaa;
                    Console.WriteLine("请输入第" + (i + 1) + "个学生的学号,姓名,成绩");
                    aaa.sno = Console.ReadLine();
                    aaa.name = Console.ReadLine();
                    aaa.degree = Convert.ToInt32(Console.ReadLine());
                    myArr.SetValue(aaa, i);
                }
    
                //分割线
                Console.WriteLine("********************************************************");
    
                //求总分、平均分
                int sum = 0;
                for (int i = 0; i < myArr.Length; i++)
                {
                    object aaa;//定义一个对象来接收从Array中取出的元素
                    aaa = myArr.GetValue(i);
                    Student b = (Student)aaa;//将取出的元素进行强制转化
                    sum += b.degree;
                }
    
    
                Console.WriteLine("总分为" + sum + "平均分为" + sum / myArr.Length);
                Console.WriteLine("********************************************************");
    
    
                //通过冒泡排序求最高分、最低分
                int[] a = new int[10];//用数组来存储元素的分数
    
                for (int i = 1; i <= myArr.Length; i++)//冒泡排序,将Array中的元素按照分数的大小排序
                {
                    for (int j = 1; j <= myArr.Length - i; j++)
                    {
                        object aaa, bbb;//定义两个对象来接收从Array中取出的元素
                        aaa = myArr.GetValue(j - 1);
                        bbb = myArr.GetValue(j);
    
                        Student aa = (Student)aaa;//将取出的元素进行强制转化
                        Student bb = (Student)bbb;
    
                        a[j - 1] = aa.degree;//通过比较相邻两个元素的分数的大小,判断是否交换元素的位置
                        a[j] = bb.degree;
                        if (a[j] > a[j - 1])
                        {
                            myArr.SetValue(aa, j);
                            myArr.SetValue(bb, j - 1);
                        }
                    }
                }
    
                object zg, zd;
                zg = myArr.GetValue(0);
                Student mm = (Student)zg;
                zd = myArr.GetValue(myArr.Length - 1);
                Student n = (Student)zd;
                Console.WriteLine("最高分为" + mm.degree + "姓名" + mm.name + "学号" 
                    + mm.sno + "最低分为" + n.degree + "姓名" + n.name + "学号" + n.sno);
    
                //分割线
                Console.WriteLine("********************************************************");
    
                //打印成绩表
                for (int i = 0; i < myArr.Length; i++)
                {
                    object aaa;
                    aaa = myArr.GetValue(i);
                    Student b = (Student)aaa;
    
                    Console.WriteLine("姓名" + b.name + "学号" + b.sno + "分数为" + b.degree);
                }
    
            }
        }
    复制代码
    bb
  • 相关阅读:
    centos6 vps部署rails
    初始设置ubuntu 16.04 Vps部署rails
    自己买的书籍
    linux mint 18.2 install erlang
    Bunder: What does :require => nil in Gemfile mean?
    javascript箭头函数
    SharpGL学习笔记(一) 平台构建与Opengl的hello World
    动力学仿真引擎ODE的学习笔记,C#演示(一)
    设计模式之 面向对象的养猪厂的故事,C#演示(二)
    设计模式之 面向对象的养猪厂的故事,C#演示(一)
  • 原文地址:https://www.cnblogs.com/dawasai/p/4443790.html
Copyright © 2020-2023  润新知