程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HUD1862:EXCEL排序

HUD1862:EXCEL排序

編輯:C++入門知識

Problem 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 2 000007 James 85 000010 Amy 90 000001 Zoe 60 000002 James 98 4 3 000007 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             這道題我真心想吐槽   喲在三個cmp函數中用三目運算符就一直WA   改成if才AC   無語       [cpp]   #include <iostream>   #include <cstdio>   #include <cstring>   #include <algorithm>   #include <cmath>   using namespace std;      struct Student   {       char name[20];       char num[20];       int score;   } stu[100005];      bool cmp1(Student x,Student y)   {       if( strcmp(x.num , y.num) > 0 )           return 0;       else           return 1;   }      bool cmp2(Student x,Student y)   {       if( strcmp(x.name , y.name) > 0 )           return 0;       else if(strcmp(x.name , y.name) == 0)       {           if( strcmp(x.num , y.num) > 0 )               return 0;       }       return 1;   }      bool cmp3(Student x,Student y)   {       if( x.score>y.score )           return 0;       else if(x.score==y.score)       {           if( strcmp(x.num , y.num) > 0 )               return 0;       }       return 1;   }      int main()   {       int n,c,i,cnt = 1;       while(cin >> n >> c && n != 0 && c != 0)       {           for(i = 0; i<n; i++)               scanf("%s%s%d",stu[i].num,stu[i].name,&stu[i].score);           if(c == 1)               sort(stu,stu+n,cmp1);           else if(c == 2)               sort(stu,stu+n,cmp2);           else if (c == 3)               sort(stu,stu+n,cmp3);           printf("Case %d:\n",cnt++);           for(i = 0; i<n; i++)               printf("%.6s %s %d\n",stu[i].num,stu[i].name,stu[i].score);       }       return 0;   }    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved