结构体:
结构体类型是用户自己定义的一种类型,它是由其他类型组合而成的,可包含构造函数、常数、字段、方法、属性、索引器、运算符、事件和嵌套类型的值类型。
结构体在几个方面不同于类:结构体为值类型而不是引用类型,并且结构体不支持继承。(继承:他爸爸有的他也有)
用结构的主要思想是用于创建小型的对象,如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 = ; i < s; i++)
{
xinxi xx = new xinxi();
Console.Write("请输入第{0}个人的学号:", i + );
xx.xh = Console.ReadLine();
Console.Write("请输入第{0}个人的姓名:", i + );
xx.name = Console.ReadLine();
Console.Write("请输入第{0}个人的语文分数:", i + );
xx.fenshu.yufen = int.Parse(Console.ReadLine());
Console.Write("请输入第{0}个人的数学分数:", i + );
xx.fenshu.shufen = int.Parse(Console.ReadLine());
Console.Write("请输入第{0}个人的英语分数:", i + );
xx.fenshu.yingfen = int.Parse(Console.ReadLine());
al.Add(xx);
}
xinxi xyx = new xinxi();
xyx.xh = "";
xyx.name = "零";
xyx.fenshu.yufen=;
xyx.fenshu.shufen=;
xyx.fenshu.yingfen=;
al.Add(xyx);
Console.WriteLine("输入完毕,按回车键继续");
Console.ReadLine();
//
Console.WriteLine();
Console.WriteLine("语文分数最高分的两个学生的信息是:");
for (int i = ; i < s - ; i += )
{
xinxi xx1 = (xinxi)al[i];
for (int j = i + ; j < s; j += )
{
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 = ; i <= ; 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 = ; i < s - ; i += )
{
xinxi xx1 = (xinxi)al[i];
for (int j = i + ; j < s; j += )
{
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 = ; i <= ; 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 = ;
for (int i = ; i < s;i++ )
{
xinxi yysum=(xinxi)al[i];
sum += yysum.fenshu.yingfen;
}
double avg = sum / s;
Console.WriteLine("英语平均分为:"+avg);
Console.ReadLine();
}
}
}
结构体练习