就在前几天我们的C#系列的初级课程已经结束,开始迈向网页制作的课堂,不过这不代表c#已经被抛弃,在最后我们还讲了一点关于结构体的知识,这篇文章主要做一下结构体的运用,以及函数的编写与运用。
题目是运用结构体来记录三名学生的五门功课成绩,要输出最终的排名,以及算出总分平均分,如果学生的成绩低于90分,则提醒他这一门不及格,最后要根据总分做出排名。
再没学结构体之前,这道题无疑是大工程,要有一层层的for循环,排序也是要用很多临时变量。
但是在学了结构体之后,可以只通过一个结构体来定义一系列不同类型的变量在一个“容器”里,方便我们使用。
代码如下:
//首先定义一个结构体,用来存储一个学生的!#%¥……%所有信息:
struct Score
{
public int Rank;
public int stuNo;
public string Name;
public double Chinese;
public double Maths;
public double English;
public double History;
public double Physics;
public double Sum;
public double Avg;
}
static void Input(Score[] arr)
{
for (int i = 0; i < arr.Length; i++)
{
Console.Write("请输入第{0}位同学的名字:", i + 1);
arr[i].Name = Console.ReadLine();
Console.Write("请输入{0}的五门科目成绩,以空格分隔。",arr[i].Name);
string str = Console.ReadLine();
string[] sco = str.Split(' ');
arr[i].Chinese = Convert.ToDouble(sco[0]);
arr[i].Maths = Convert.ToDouble(sco[1]);
arr[i].English = Convert.ToDouble(sco[2]);
arr[i].History = Convert.ToDouble(sco[3]);
arr[i].Physics = Convert.ToDouble(sco[4]);
arr[i].Sum = arr[i].Chinese + arr[i].Maths + arr[i].English + arr[i].History + arr[i].Physics;
arr[i].Avg = arr[i].Sum / 5;
}
}
static void Sort(Score[] arr)
{
for (int i = 1; i <= arr.Length - 1; i++)
{
for (int j = 1; j <= arr.Length - i; j++)
{
if (arr[j].Sum > arr[j - 1].Sum)
{
Score temp = arr[j - 1];
arr[j - 1] = arr[j];
arr[j] = temp;
}
}
}
}
static void Output(Score[] arr)
{
for (int i = 0; i < arr.Length; i++)
{
arr[i].Rank = i + 1;
Console.WriteLine("{0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}\t{7}\t{8}\t{9}\t", arr[i].Rank, arr[i].stuNo, arr[i].Name, arr[i].Chinese, arr[i].Maths, arr[i].English, arr[i].History, arr[i].Physics, arr[i].Sum, arr[i].Avg.ToString("#.00"));
}
}
static void Main(string[] args)
{
Score[] arr = new Score[3];
Input(arr);
Sort(arr);
Output(arr);
}
如果真正掌握了结构体的话,这段代码不算难。不过这里贴的代码都比较杂乱,没有格式,看起来可能复杂一点,望见谅。