1. 程式人生 > >【PAT】1004. 成績排名 (20)

【PAT】1004. 成績排名 (20)

esp 10個 升序 con 使用 clas 首地址 相同 bsp

1004. 成績排名 (20)

讀入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

定義一個結構體來存儲學生的個人信息。
程序說明:
  1.頭文件 #include<bits/stdc++.h> 包含了C++裏面所有的頭文件,可直接使用
  2.使用了標準模板庫(STL)中的sort()函數,sort(a,b,cmp)包含三個參數,a為排序區間的首地址,b為排序區間尾地址的下一個地址,排序區間為[a,b),對一個數組a[100]中a[0]到a[99]
   排序的話,直接寫為sort(a,a+100,cmp)即可,第三個參數cmp為比較函數,用於控制sort()函數是升序排列還是降序排列
  3.由於使用了標準模板庫函數,需要加入:
using namespace std;

  

C++ 代碼如下:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 struct student{
 4     string name;
 5     string id;
 6     int grade;
 7 } info[101];
 8 
 9 bool compare(student a,student b){
10     return a.grade<b.grade;    //升序排列 
11     //return a.grade>b.grade;  
//降序排列 12 } 13 int main() { 14 int n,i; 15 cin>>n; 16 for(i=0;i<n;i++) 17 cin>>info[i].name>>info[i].id>>info[i].grade; 18 sort(info,info+n,compare); 19 cout<<info[n-1].name<< <<info[n-1].id<<endl; 20 cout<<info[0].name<< <<info[0].id<<endl; 21 system("pause"); 22 return 0; 23 }

備註:當info[]數組定義為info[100]時,PAT測試會顯示“段錯誤”

【PAT】1004. 成績排名 (20)