成绩排名(PTA)
某學(xué)校的成績(jī)單算法如下:
最終成績(jī) = (A課成績(jī) * A課學(xué)分 + B課成績(jī) * B課學(xué)分 + C課成績(jī) * C課學(xué)分 + D課成績(jī) * D課學(xué)分)/總學(xué)分,結(jié)果保留兩位小數(shù)。
如某同學(xué)成績(jī)?nèi)缦?#xff1a;
| 算法分析與設(shè)計(jì) | 4.0 | 90 |
| 大學(xué)物理 | 3.5 | 85 |
| Python程序設(shè)計(jì) | 3.0 | 95 |
| 計(jì)算機(jī)系統(tǒng)基礎(chǔ) | 4.0 | 82.5 |
| 線性代數(shù) | 3.0 | 80 |
則他的最終成績(jī)?yōu)?/p>
(4.0 * 90 + 3.5 * 85 + 3.0 * 95 + 4.0 * 82.5 + 3.0 * 80)/(4.0+3.5+3.0+4.0+3.0) = 86.43
現(xiàn)在給你幾組學(xué)生的成績(jī),要求你計(jì)算他們的最終成績(jī),并對(duì)他們進(jìn)行排名。
輸入格式:
第一行輸入兩個(gè)數(shù),學(xué)生的個(gè)數(shù)S(10000以內(nèi))及課程數(shù)C(100以內(nèi))。
第二行輸入C個(gè)數(shù),分別是C門(mén)課程的學(xué)分。
接下來(lái)的S行,每一行有C個(gè)數(shù),這C個(gè)數(shù)分別代表學(xué)生C門(mén)課的成績(jī),每門(mén)課的成績(jī)出現(xiàn)順序與第二行的學(xué)分一一對(duì)應(yīng)。
每門(mén)課的成績(jī)滿分為100分,學(xué)分最高不超過(guò)10。
輸出格式:
輸出有S行,由高到低的輸出學(xué)生的最終成績(jī),以及學(xué)生在輸入中出現(xiàn)的次序(從1開(kāi)始),如果有最終成績(jī)相同的學(xué)生,則他們的順序按輸入中的次序有小到大排列。成績(jī)保留兩位有效數(shù)字。
輸入樣例:
在這里給出一組輸入。例如:
4 2 2.5 4 90 80 94 92.5 80 75 90 95輸出樣例:
在這里給出相應(yīng)的輸出。例如:
93.08 2 93.08 4 83.85 1 76.92 3 #include<bits/stdc++.h> using namespace std; void swap(int &a, int &b) {int temp = a;a = b;b = temp; } int main(){int s,c,i,j;//s個(gè)學(xué)生,c個(gè)課程cin >> s >> c;float num[c],ct=0;//num每個(gè)學(xué)分,ct總學(xué)分for(i=0;i<c;i++){cin >> num[i];ct += num[i];}float val[s]={0},k;//val存儲(chǔ)成績(jī),k每次輸入成績(jī)int val2[s]={0};for(i=0;i<s;i++){for(j=0;j<c;j++){cin >> k;val[i]+=k*num[j];val2[i]=i+1;}val[i]/=ct;}for(i=0;i<s-1;i++)for(j=0;j<s-1-i;j++){if(val[j]<val[j+1]){swap(val[j],val[j+1]);swap(val2[j],val2[j+1]);}}for(i=0;i<s;i++){if(i)cout <<endl;printf("%.2f %d",val[i],val2[i]);}}?
總結(jié)
- 上一篇: 广州市南沙区人社领导来访霖珑云科考察调研
- 下一篇: 【bzoj4566】找相同字符 后缀自