//第六周練習題 第三版參考解答 using System; namespace homework6 { class Program { static void Main(string[] args) { Console.WriteLine("請輸入班級人數"); int peopleNum = int.Parse(Console.ReadLine()); int[,] score = new int[peopleNum, 3]; for (int i = 0; i < peopleNum; i++) { Console.WriteLine("請輸入第" + (i + 1) + "位同學的期中考成績"); score[i, 0] = int.Parse(Console.ReadLine()); Console.WriteLine("請輸入第" + (i + 1) + "位同學的期末考成績"); score[i, 1] = int.Parse(Console.ReadLine()); Console.WriteLine("請輸入第" + (i + 1) + "位同學的作業成績"); score[i, 2] = int.Parse(Console.ReadLine()); } Console.WriteLine("編號\t期中考\t期末考\t作業\t總成績\t名次"); Console.WriteLine("--------------------------------------------"); double[] Final = new double[peopleNum]; double[] FinalCopy = new double[peopleNum]; int[] seq = new int[peopleNum]; //先計算總成績 for (int i = 0; i < peopleNum; i++) { Final[i] = (double) score[i, 0]*0.4 + score[i, 1]*0.4 + score[i, 2]*0.2; FinalCopy[i] = Final[i]; } int idx = 0; //計算名次 Array.Sort(FinalCopy); Array.Reverse(FinalCopy); for (int i = 0; i < peopleNum; i++) { idx = Array.IndexOf(FinalCopy, Final[i]); seq[i] = idx + 1; } //印出個人成績和名次 for (int i = 0; i < peopleNum; i++) { Console.Write((i + 1) + "\t" + score[i, 0]); Console.Write("\t" + score[i, 1]); Console.Write("\t" + score[i, 2]); Console.Write("\t" + "{0:F2}", Final[i]); Console.Write("\t" + seq[i] + "\n"); } double midexam = 0; double finexam = 0; double hw = 0; for (int j = 0; j < peopleNum; j++) { midexam += score[j, 0]; finexam += score[j, 1]; hw += score[j, 2]; } midexam /= peopleNum; finexam /= peopleNum; hw /= peopleNum; //印出各科平均 Console.WriteLine("--------------------------------------------"); Console.Write("平均" + "\t" + "{0:F2}", midexam); Console.Write("\t" + "{0:F2}", finexam); Console.Write("\t" + "{0:F2}", hw); Console.Write("\n"); } } }