生活随笔
收集整理的這篇文章主要介紹了
C_北理工乐学_结构
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
C_北理工樂(lè)學(xué)_結(jié)構(gòu)
58. 學(xué)生成績(jī)排序
/* 如果有優(yōu)化方案評(píng)論我啊 */
/為什么代碼沒(méi)有高亮?/
大家參加了期末考試,成績(jī)出來(lái)后老師要對(duì) n 個(gè)學(xué)生進(jìn)行成績(jī)匯總和排序。要求程序按成績(jī)降序進(jìn)行排序。在排序過(guò)程中對(duì)于成績(jī)相同的學(xué)生,要按照輸入數(shù)據(jù)的順序進(jìn)行排列。例如:有5名學(xué)生的成績(jī):
zhang1,90
zhang2,91
zhang3,99
zhang4,91
zhang5,98
則排序結(jié)果應(yīng)該為:
zhang3,99
zhang5,98
zhang2,91
zhang4,91
zhang1,90
>請(qǐng)注意例題中“zhang2”和“zhang4”的排列順序。
輸入:
第一行為將要輸入的學(xué)生數(shù)量n
從第二行起后面連續(xù) n 行數(shù)據(jù),每行為一名學(xué)生的姓名(長(zhǎng)度不超過(guò)20個(gè)字符,不包括空格),考試成績(jī)(int)
輸出:
排序后的結(jié)果。每行為一名學(xué)生的姓名和成績(jī)。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{int num;int i,j,t=0;char inf[10000];int m[100];int temp;int flag;struct o{char name[1000];int score;int no;}student[100];/*輸入學(xué)生個(gè)數(shù)*/scanf("%d",&num); for(i=0;i<num;i++){ student[i].no=i; //標(biāo)記序號(hào)t=0;flag=0;scanf("%s",inf);/*輸入姓名*/for(j=0;inf[j]!=',';j++){student[i].name[j]=inf[j];}student[i].name[j]='\0'; //添加姓名尾標(biāo)/*輸入成績(jī)*/for(j++;inf[j]!='\0';j++){m[t]=inf[j]-'0';t++;}student[i].score=0;for(j=0;j<t;j++)student[i].score=m[j]*pow(10,t-j-1)+student[i].score; //計(jì)算成績(jī)}/*降序排序*/for(i=0;i<num;i++)for(j=i+1;j<num;j++)if(student[i].score<student[j].score&&student[i].no<student[j].no){temp=student[i].no;student[i].no=student[j].no;student[j].no=temp; }/*分?jǐn)?shù)相同根據(jù)姓名排序*//*因?yàn)樾W(xué)把單獨(dú)拿出來(lái),否則測(cè)試用例1錯(cuò)誤*/for(i=0;i<num;i++)for(j=i+1;j<num;j++)if(student[i].score==student[j].score){for(t=0;student[j].name[t]!='\0'&&student[i].name[t]!='0';t++)if(student[j].name[t]>student[i].name[t]&&student[j].no<student[i].no){temp=student[i].no;student[i].no=student[j].no;student[j].no=temp; }}/*輸出*/for(i=0;i<num;i++)for(j=0;j<num;j++)if(student[j].no==i){for(t=0;student[j].name[t]!='\0';t++)printf("%c",student[j].name[t]);printf(",");printf("%d\n",student[j].score);}
}
總結(jié)
以上是生活随笔為你收集整理的C_北理工乐学_结构的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。