結構體排序

2021-07-09 19:17:15 字數 1729 閱讀 2074



description

excel可以對一組紀錄按任意指定列排序。現請你編寫程式實現類似功能。

input

測試輸入包含若干測試用例。每個測試用例的第1行包含兩個整數 n (<=100000) 和 c,其中 n 是紀錄的條數,c 是指定排序的列號。以下有 n

行,每行包含一條學生紀錄。每條學生紀錄由學號(6位數字,同組測試中沒有重複的學號)、姓名(不超過8位且不包含空格的字串)、成績(閉區間[0, 100]內的整數)組成,每個專案間用1個空格隔開。當讀到 n=0 時,全部輸入結束,相應的結果不要輸出。

output

對每個測試用例,首先輸出1行「case i:」,其中 i 是測試用例的編號(從1開始)。隨後在 n 行中輸出按要求排序後的結果,即:當 c=1 時,按學號遞增排序;當 c=2時,按姓名的非遞減字典序排序;當 c=3

時,按成績的非遞減排序。當若干學生具有相同姓名或者相同成績時,則按他們的學號遞增排序。

sample input

3 1

000007 james 85

000010 amy 90

000001 zoe 60

4 2000007 james 85

000010 amy 90

000001 zoe 60

000002 james 98

4 3000007 james 85

000010 amy 90

000001 zoe 60

000002 james 90

0 0

sample output

case 1:

000001 zoe 60

000007 james 85

000010 amy 90

case 2:

000010 amy 90

000002 james 98

000007 james 85

000001 zoe 60

case 3:

000001 zoe 60

000007 james 85

000002 james 90

000010 amy 90

我的**:

#include

#include

#include

#include

#include

using namespace std;

const int maxn = 1e5 + 10;

typedef struct student

stu[maxn];

stu s;

int cmp_num(const void *a, const void *b)

int cmp_sco(const void *a, const void *b)

int cmp_name(const void *a,const void *b)

int main()

if(1 == c)

else if(2 == c)

else if(3 == c)

printf("case %d:\n", i++);

for( j=0; j < n; j++ )

printf("%06d %s %d\n", s[j].num, s[j].name, s[j].score);

}return 0;

}

結構體及結構體排序

1 定義的方法struct node 用strut定義乙個結構體,node是結構體的名字,可以自己瞎取。p 1000 這樣你就定義了乙個神奇的陣列!沒錯,它就是node型陣列!上面的 還在結構體的末尾定義了乙個該型的陣列,其實這個陣列不一定要有,而且也可以在主函式中定義,但是感覺上用的比較多,而且這...

結構體排序

貪心演算法中不想交區間問題 題目 解題思路 定義兩個變數,乙個記為結束時間,乙個記為區間數。將結束時間排序,若相同,就將開始時間從大到小排序 若不同,就將結束時間按從小到大排序。這樣第乙個區間是確定的,再比較下乙個區間的開始時間與第乙個區間結束時間的大小,大於則加一。再將結束時間改變即可,繼續迴圈。...

結構體排序

結構體排序 本關任務 有n個學生的資訊 包括學號,姓名,成績 要求按照成績的高低順序輸出學生的資訊。補充 要求按照成績的高低順序輸出學生的資訊。平台會對你編寫的 進行測試,比對你輸出的數值與實際正確數值,只有所有資料全部計算正確才能通過測試 測試輸入 5 10101 zhang 78 10103 w...