最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

編程每日刷題系列三(問題 C: EXCEL排序)

2021-02-08 20:07 作者:Eric_Richard  | 我要投稿

題目描述

Excel可以對一組紀(jì)錄按任意指定列排序?,F(xiàn)請你編寫程序?qū)崿F(xiàn)類似功能。
對每個測試用例,首先輸出1行“Case i:”,其中 i 是測試用例的編號(從1開始)。隨后在 N 行中輸出按要求排序后的結(jié)果,即:當(dāng) C=1 時,按學(xué)號遞增排序;當(dāng) C=2時,按姓名的非遞減字典序排序;當(dāng) C=3 時,按成績的非遞減排序。當(dāng)若干學(xué)生具有相同姓名或者相同成績時,則按他們的學(xué)號遞增排序。

輸入

測試輸入包含若干測試用例。每個測試用例的第1行包含兩個整數(shù) N (N<=100000) 和 C,其中 N 是紀(jì)錄的條數(shù),C 是指定排序的列號。以下有N行,每行包含一條學(xué)生紀(jì)錄。每條學(xué)生紀(jì)錄由學(xué)號(6位數(shù)字,同組測試中沒有重復(fù)的學(xué)號)、姓名(不超過8位且不包含空格的字符串)、成績(閉區(qū)間[0, 100]內(nèi)的整數(shù))組成,每個項目間用1個空格隔開。當(dāng)讀到 N=0 時,全部輸入結(jié)束,相應(yīng)的結(jié)果不要輸出。

輸出

對每個測試用例,首先輸出1行“Case i:”,其中 i 是測試用例的編號(從1開始)。隨后在 N 行中輸出按要求排序后的結(jié)果,即:當(dāng) C=1 時,按學(xué)號遞增排序;當(dāng) C=2時,按姓名的非遞減字典序排序;當(dāng) C=3 時,按成績的非遞減排序。當(dāng)若干學(xué)生具有相同姓名或者相同成績時,則按他們的學(xué)號遞增排序。

樣例輸入

樣例輸出

反面教材C++代碼:

樣例運(yùn)行結(jié)果:

上面這個代碼不嚴(yán)謹(jǐn),雖然樣例運(yùn)行結(jié)果符合題意。

不嚴(yán)謹(jǐn)在于題目說了,當(dāng)若干學(xué)生具有相同姓名或者相同成績時,則按他們的學(xué)號遞增排序。

所以函數(shù)cmp2需要完善一下,其實還有其他欠考慮的地方,比方說輸出到顯示屏的Case?i:中的i不是指的所選的排序方式1~3中的一個,而是隨著數(shù)據(jù)的輸入,i是不斷增加的

完善版的C++代碼:

另一個版本的C++代碼:

(由于我也不知道為什么完整的代碼無法在代碼塊中像上面那個正常完整的顯示出來,估計是B站的編輯器的Bug吧,所以我就把代碼放出來了,不裝到代碼塊里了

#include <stdio.h>

#include <string.h>

#include <algorithm>?

using namespace std;

struct student{

char num[10];

char name[10];

int score;

}stu[100010];

bool cmp1(student a,student b){

return strcmp(a.num,b.num )<0;

}

bool cmp2(student a,student b){

if(strcmp(a.name ,b.name )) return strcmp(a.name ,b.name )<0;

else return? strcmp(a.num,b.num )<0;

}

bool cmp3(student a,student b){

if(a.score !=b.score ) return a.score <b.score ;

else return? strcmp(a.num,b.num )<0;

}

int main(){

int m,n,count=0;

while(scanf("%d %d",&m,&n)!=EOF){

if(m==0) break;

int i;

for(i=0;i<m;i++){

scanf("%s %s %d",&stu[i].num ,&stu[i].name ,&stu[i].score );

}

switch(n){

case 1:sort(stu,stu+m,cmp1);break;

case 2:sort(stu,stu+m,cmp2);break;

case 3:sort(stu,stu+m,cmp3);break;

}

printf("Case %d:\n",++count);

for(i=0;i<m;i++){

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

}

}

return 0;

}

之后我會持續(xù)更新,如果喜歡我的文章,請記得一鍵三連哦,點贊關(guān)注收藏,你的每一個贊每一份關(guān)注每一次收藏都將是我前進(jìn)路上的無限動力 ?。。〃I(▔▽▔)↗感謝支持!


編程每日刷題系列三(問題 C: EXCEL排序)的評論 (共 條)

分享到微博請遵守國家法律
兖州市| 岳阳县| 成武县| 汕尾市| 西青区| 蕲春县| 崇州市| 甘孜| 扎兰屯市| 濉溪县| 项城市| 巴楚县| 丰原市| 丰台区| 晋州市| 邮箱| 米泉市| 平陆县| 富裕县| 通州市| 遂昌县| 阿拉善左旗| 灌阳县| 巫山县| 扎囊县| 谢通门县| 乃东县| 田林县| 淅川县| 池州市| 河北省| 肃南| 新源县| 金平| 松潘县| 肥城市| 龙海市| 柏乡县| 柳江县| 营口市| 锦屏县|