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();
        }
    }
}
结构体练习

 

posted @ 2016-10-19 22:02  野性狼心  阅读(392)  评论(0编辑  收藏  举报