PAT 1004(成績排名) C語言
阿新 • • 發佈:2018-12-19
PAT 1004(成績排名)–C語言解法
題目要求:
讀入 n(>0)名學生的姓名、學號、成績,分別輸出成績最高和成績最低學生的姓名和學號。
輸入格式:
每個測試輸入包含 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
分析
1.每一條資料有三類資訊,可以定義結構體儲存資訊。
2.由於沒有給出具體資料量n的上限,可以一邊讀入一邊判斷。
程式碼
#include<stdio.h>
struct information{ //定義結構體變數
char name[11];
char number[11]; //注意!題目雖然說不超過10個字元,但定義是要留出一個存'\0'
int score;
};
int main ()
{
int n,i;
struct information max,min,next; //分別儲存最高分,最低分,和新錄入資料
scanf("%d",&n);
scanf("%s %s %d",next.name,next.number ,&next.score);
max=min=next; //要先讀取一個數據,才可以進行下面的迴圈
for(i=1;i<=n-1;i++){
scanf("%s %s %d",next.name,next.number ,&next.score);
if(next.score>max.score) max=next;
if(next.score<min.score) min=next;
}
printf("%s %s\n",max.name,max.number);
printf("%s %s",min.name,min.number);
return 0;
}