清华大学计算机考研机试KY2 成绩排序
生活随笔
收集整理的這篇文章主要介紹了
清华大学计算机考研机试KY2 成绩排序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
描述 查找和排序題目:輸入任意(用戶,成績)序列,可以獲得成績從高到低或從低到高的排列,相同成績 都按先錄入排列在前的規則處理。示例: jack 70 peter 96 Tom 70 smith 67從高到低 成績 peter 96 jack 70 Tom 70 smith 67從低到高smith 67jack 70 Tom 70 peter 96輸入描述: 注意一個case里面有多組樣例,請用循環處理輸入 輸入多行,先輸入要排序的人的個數,然后輸入排序方法0(降序)或者1(升序)再分別輸入他們的名字和成績,以一個空格隔開。 輸出描述: 按照指定方式輸出名字和成績,名字和成績之間以一個空格隔開 示例1 輸入: 3 0 fang 90 yang 50 ning 70 輸出: fang 90 ning 70 yang 50 示例2 輸入: 3 1 fang 90 yang 50 ning 70 3 0 moolgouua 43 aebjag 87 b 67 輸出: yang 50 ning 70 fang 90 aebjag 87 b 67 moolgouua 43 說明: 第一組用例: 3 1 fang 90 yang 50 ning 70 升序排序為: yang 50 ning 70 fang 90 第二組降序為: aebjag 87 b 67 moolgouua 43思路
#include<iostream> #include<algorithm>using namespace std;struct Student{int id;string name;int score; };Student arr[1000]; //升序 bool cmp1(Student s1,Student s2){if(s1.score == s2.score)return s1.id < s2.id;elsereturn s1.score < s2.score; } //降序 bool cmp2(Student s1,Student s2){if(s1.score == s2.score)return s1.id < s2.id;elsereturn s1.score > s2.score; } int main(){int n,flag;while(cin >> n >> flag){for(int i = 0; i < n;i++){arr[i].id = i;cin >> arr[i].name >> arr[i].score;}if(flag == 0)sort(arr,arr+n,cmp2);elsesort(arr,arr+n,cmp1);for(int i = 0;i < n;i++)cout << arr[i].name << " " << arr[i].score << endl;} }總結
以上是生活随笔為你收集整理的清华大学计算机考研机试KY2 成绩排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JS事件冒泡浏览器兼容
- 下一篇: idea框选为矩形解决方案