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(); } } }