1004 成績排名

// 讀入n名學生的姓名、學號、成績,分別輸出成績最高和成績最低學生的姓名和學號。
// 
// 輸入格式:每個測試輸入包含1個測試用例,格式爲
// 
// 第1行:正整數n
// 第2行:第1個學生的姓名 學號 成績
// 第3行:第2個學生的姓名 學號 成績
// ... ... ...
// 第n + 1行:第n個學生的姓名 學號 成績
// 
// 其中姓名和學號均爲不超過10個字符的字符串,成績爲0到100之間的一個整數,這裏保證在一組測試用例中沒有兩個學生的成績是相同的。
// 
// 輸出格式:對每個測試用例輸出2行,第1行是成績最高學生的姓名和學號,第2行是成績最低學生的姓名和學號,字符串間有1空格。
// 輸入樣例:3
// Joe Math990112 89
// Mike CS991301 100
// Mary EE990830 95
// 
// 輸出樣例:Mike CS991301
// Joe Math990112

#include <stdio.h>
#include <string.h>

// 定義結構體變量STUDENT
typedef struct{
	char name[11];		// 姓名
	char sno[11];		// 學號
	int score;			// 成績
} STUDENT;

int main(void)
{
	int num;				// 用以存儲待處理的學生數目
	STUDENT student[100];	// 因爲題目說明在一組測試樣例中沒有兩個學生的成績相同,故最多有100個學生

	STUDENT gelgooder;		// 用以存儲學霸的信息
	STUDENT gelsucker;		// 用以存儲學渣的信息

	scanf("%d", &num);	
	getchar();			// 注意處理用戶輸入第一行末的換行符(其實在這裏不處理也可以)

	for (int i = 0; i < num; i++)
	{
		scanf("%s %s %d",
			&student[i].name,
			&student[i].sno,
			&student[i].score);
		getchar();		// 注意處理每行輸入末尾的回車(其實在這裏不處理也可以)
		if (i == 0)
		{
			// 初始化學霸與學渣
			gelgooder = student[i];
			gelsucker = student[i];
		}
		else
		{
			// 更新學霸與學渣
			gelgooder = student[i].score > gelgooder.score ? student[i] : gelgooder;
			gelsucker = student[i].score < gelsucker.score ? student[i] : gelsucker;
		}
	}

	// 展示學霸與學渣
	printf("%s %s\n", gelgooder.name, gelgooder.sno);
	printf("%s %s\n", gelsucker.name, gelsucker.sno);

	return 0;
}

// 該題沒有難度,可用於小學生學習struct結構體,當然本題中也可以不用struct來解,這裏不多說

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