藍橋試題 算法提高 學生成績統計 JAVA

問題描述
  編寫一個程序,建立了一條單向鏈表,每個結點包含姓名、學號、英語成績、數學成績和C++成績,並通過鏈表操作平均最高的學生和平均分最低的學生並且輸出。
輸入格式
  輸入n+1行,第一行輸入一個正整數n,表示學生數量;接下來的n行每行輸入5個數據,分別表示姓名、學號、英語成績、數學成績和C++成績。注意成績有可能會有小數。
輸出格式
  輸出兩行,第一行輸出平均成績最高的學生姓名。第二行輸出平均成績最低的學生姓名。
樣例輸入
2
yx1 1 45 67 87
yx2 2 88 90 99
樣例輸出
yx2
yx1

思路:輸入和輸入題目已經給的很清楚了,關鍵點就在與怎麼給他的姓名搞出來輸出,熟練運用Integer.MIN_VALUE和Integer.MAX_VALUE就沒問題了。

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();
		String Max = "";                         // 成績最高
		String Min = "";                         // 成績最低
		double maxavg = Integer.MIN_VALUE;       // 最大平均值
		double minavg = Integer.MAX_VALUE;       // 最小平均值
		for (int i = 0; i < n; i++) {
			String Name = scanner.next();        // 姓名
			String Id = scanner.next();          // 學號
			int English = scanner.nextInt();     // 英語
			int Mathematics = scanner.nextInt(); // 數學
			int Cplus = scanner.nextInt();       // C++
			double Avg = (English + Mathematics + Cplus) / 3;   // 平均成績
			if (maxavg < Avg) {                  // 最大平均值<平均成績
				Max = Name;                      // 最大值=姓名
				maxavg = Avg;                    // 最大平均值=平均成績
			}
			if (minavg > Avg) {                  // 最小平均值>平均成績
				Min = Name;                      // 最小值=姓名
				minavg = Avg;                    // 最小平均值=平均成績
			}
		}
		System.out.println(Max);                 // 輸出成績最高者
		System.out.println(Min);                 // 輸出成績最低者
	}
}

小劇場:繼續前行 繼續夢想 Keep on moving Keep on dreaming

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章