zoukankan      html  css  js  c++  java
  • C#-★结构体★

    结构体:

          结构体类型是用户自己定义的一种类型,它是由其他类型组合而成的,可包含构造函数、常数、字段、方法、属性、索引器、运算符、事件和嵌套类型的值类型。

          结构体在几个方面不同于类:结构体为值类型而不是引用类型,并且结构体不支持继承。(继承:他爸爸有的他也有)

          用结构的主要思想是用于创建小型的对象,如Point和FileInfo等等。这可以节省内存,因为没有如类对象所需的那样有额外的引用产生。

          结构体是一个变量组,将一组变量放在一起,其实就是一个自定义的集合,里面可以包含各种类型的数据,用法和集合一样。

          结构体一般定义在Main函数上面,位于Class下面,作为一个类,一般情况Struct定义在Main函数前面,Main函数里面的地方都可以使用,参数前面加上public代表公用变量。

    格式:

    struct 结构体名称

    {

    public int+变量名:

    public string+变量名:

    public int+变量名:

    }

    练习:输入人数,输入学号、姓名、性别、总分,并打印

    //请输入班级人数,输入每个人的学号,姓名,和语文分数、数学分数和英语分数(要求使用结构体)
                //求班级里两个语文分数是最高分的学生的所有信息;数学分数是最高分的两个学生的所有信息;英语平均分。
    
    using System;
    using System.Collections.Generic;
    using System.Collections;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace 练习
    {
        class Program
        {
            struct xinxi
            {
                public string xh;
                public string name;
                public Score fenshu;
            }
            struct Score
            {
                public double yufen;
                public double shufen;
                public double yingfen;
            }
    
            static void Main(string[] args)
            {
                ArrayList al = new ArrayList();
                Console.Write("请输入班级人数:");
                int s = int.Parse(Console.ReadLine());
                for (int i = 0; i < s; i++)
                {
                    xinxi xx = new xinxi();
                    Console.Write("请输入第{0}个人的学号:", i + 1);
                    xx.xh = Console.ReadLine();
                    Console.Write("请输入第{0}个人的姓名:", i + 1);
                    xx.name = Console.ReadLine();
                    Console.Write("请输入第{0}个人的语文分数:", i + 1);
                    xx.fenshu.yufen = int.Parse(Console.ReadLine());
                    Console.Write("请输入第{0}个人的数学分数:", i + 1);
                    xx.fenshu.shufen = int.Parse(Console.ReadLine());
                    Console.Write("请输入第{0}个人的英语分数:", i + 1);
                    xx.fenshu.yingfen = int.Parse(Console.ReadLine());
                    al.Add(xx);
                }
                xinxi xyx = new xinxi();
                xyx.xh = "000";
                xyx.name = "";
                xyx.fenshu.yufen=01;
                xyx.fenshu.shufen=01;
                xyx.fenshu.yingfen=01;
                al.Add(xyx);
                Console.WriteLine("输入完毕,按回车键继续");
                Console.ReadLine();
                //
                Console.WriteLine();
                Console.WriteLine("语文分数最高分的两个学生的信息是:");
                for (int i = 0; i < s - 1; i += 1)
                {
                    xinxi xx1 = (xinxi)al[i];
                    for (int j = i + 1; j < s; j += 1)
                    {
                        xinxi xx2 = (xinxi)al[j];
                        if (xx1.fenshu.yufen < xx2.fenshu.yufen)
                        {
                            al[s] = al[i];
                            al[i] = al[j];
                            al[j] = al[s];
                        }
                    }
                }
                for (int i = 0; i <= 1; i++)
                {
                    xinxi xxx = (xinxi)al[i];
                    Console.WriteLine("学号{0},姓名{1},语文{2}分,数学{3}分,英语{4}分。", xxx.xh, xxx.name, xxx.fenshu.yufen, xxx.fenshu.shufen, xxx.fenshu.yingfen);
                }
                
                //
                Console.WriteLine();
                Console.WriteLine("数学分数最高分的两个学生的信息是:");
                for (int i = 0; i < s - 1; i += 1)
                {
                    xinxi xx1 = (xinxi)al[i];
                    for (int j = i + 1; j < s; j += 1)
                    {
                        xinxi xx2 = (xinxi)al[j];
                        if (xx1.fenshu.shufen < xx2.fenshu.shufen)
                        {
                            al[s] = al[i];
                            al[i] = al[j];
                            al[j] = al[s];
                        }
                    }
                }
                for (int i = 0; i <= 1; i++)
                {
                    xinxi xxx = (xinxi)al[i];
                    Console.WriteLine("学号{0},姓名{1},语文{2}分,数学{3}分,英语{4}分。", xxx.xh, xxx.name, xxx.fenshu.yufen, xxx.fenshu.shufen, xxx.fenshu.yingfen);
                }
                //
                Console.WriteLine();
                double sum = 0;
                for (int i = 0; i < s;i++ )
                {
                    xinxi yysum=(xinxi)al[i];
                    sum += yysum.fenshu.yingfen;
                }
                double avg = sum / s;
                Console.WriteLine("英语平均分为:"+avg);
                Console.ReadLine();
            }
        }
    }
    结构体练习

  • 相关阅读:
    ping-tool
    yum 安装 5.6
    音视频编辑
    图表
    VC2013设置输出文件目录
    hdu 4679 Terrorist’s destroy 树形DP
    poj 3580 SuperMemo splay tree(重口味)
    hdu 1890 Robotic Sort splaytree+懒惰标记
    bzoj 1588 [HNOI2002]营业额统计 splay tree
    bzoj 1503 [NOI2004]郁闷的出纳员 splay tree
  • 原文地址:https://www.cnblogs.com/qq450867541/p/5978911.html
Copyright © 2011-2022 走看看