一本通題庫 第二部分 基礎算法 --> 第二章 數據排序 1178:成績排序


1178:成績排序


時間限制: 1000 ms         內存限制: 65536 KB
提交數: 17971     通過數: 7139 

【題目描述】

給出班里某門課程的成績單,請你按成績從高到低對成績單排序輸出,如果有相同分數則名字字典序小的在前。

【輸入】

第一行為n (0 < n < 20),表示班里的學生數目;

接下來的n行,每行為每個學生的名字和他的成績, 中間用單個空格隔開。名字只包含字母且長度不超過20,成績為一個不大於100的非負整數。

【輸出】

把成績單按分數從高到低的順序進行排序並輸出,每行包含名字和分數兩項,之間有一個空格。

【輸入樣例】

4
Kitty 80
Hanmeimei 90
Joey 92
Tim 28

【輸出樣例】

Joey 92
Hanmeimei 90 
Kitty 80
Tim 28

源代碼

#include<iostream> #include<cstdio> #include<algorithm> #include<math.h> #include<cstring> #include<stdio.h> using namespace std; struct node { char name[30]; int score; } stu[30]; int main(void) { int n; cin>>n; for(int i=1;i<=n;i++) { cin>>stu[i].name>>stu[i].score; } for(int i=1;i<=n;i++) { for(int j=i+1;j<=n;j++) { if(stu[i].score<=stu[j].score) swap(stu[i],stu[j]); } } for(int i=1;i<=n;i++) { for(int j=i;j<=n;j++) { if((stu[i].score==stu[j].score)&&strcmp(stu[i].name,stu[j].name)>0) { swap(stu[i],stu[j]); } } } for(int i=1;i<=n;i++) { cout<<stu[i].name<<" "<<stu[i].score<<endl; } return 0; }


這道題中,用到了struct自定義混合數據類型的操作。

1.在輸入的時候需要將定義的數據依次用 ”stu[i].數據名” 來輸入;
2.在運算比較的時候也需要依次調用;
3.輸出方式同輸入方式;
4.定義時struct可以單獨聲明,也可以用typeof 來聲明struct型混合變量;
5.要用到<stdio.h>頭文件。
6.在struct中,不僅可以聲明成員變量,還可以聲明成員函數 —— ——(C++語言比C語言優化部分)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM