一次考試中,於所有及格學生中獲取最低分數者最為幸運,反之,於所有不及格同學中,獲取最高分數者,可以說是最為不幸,而此二種分數,可以視為成績指標。
請你設計一支程式,讀入全班成績(人數不固定),請對所有分數進行排序,並分別找出不及格中最高分數,以及及格中最低分數。
當找不到最低及格分數,表示對於本次考試而言,這是一個不幸之班級,此時請你印出:「worst case」;反之,當找不到最高不及格分數時,請你印出「best case」。
註:假設及格分數為 60,每筆測資皆為 0~100 間整數,且筆數未定。
輸入格式:原題單測資,本參考改為多測資,讀至EOF, 每筆測資說明如下:第一行輸入學生人數,第二行為各學生分數(0~100 間),分數與分數之間以一個空白間格。每一筆測資的學生人數為 1~20 的整數。
輸出格式:每筆測資輸出三行兩筆輸出之間空一列。
第一行由小而大印出所有成績 ,兩數字之間以一個空白間格,最後一個數字後無空白;
第二行印出最高不及格分數,如果全數及格時,於此行印出 best case;
第三行印出最低及格分數,當全數不及格時,於此行印出 worst case。
範例輸入:
10
0 11 22 33 55 66 77 99 88 44
3
33 53 13
2
88 66
0 11 22 33 44 55 66 77 88 99
55
66
13 33 53
53
worst case
66 88
best case
66
參考程式碼:
// apcs-1 成績指標
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
const int MaxN = 20;
const int US=101; //最高分數 +1
const int LS= -1; //最低分數 -1
const int PS= 60; //及格分數
int main()
{
int i, n , sco;
int a[MaxN];
bool first=true;
while(cin >> n)
{
int bsco = US; //及格最低分
int wsco =LS; // 不及格最高分
for(i=0; i<n; ++i)
{
cin >> a[i];
if(a[i]>=PS)
bsco = min(bsco,a[i]); //及格最低
else
wsco = max(wsco,a[i]); //不及格最高
}
sort(a,a+n);
if (first) first = false; else cout << endl;
cout << a[0];
for(i=1; i<n; ++i) cout <<' '<< a[i];
cout << endl;
if( wsco==LS ) cout << "best case\n";
else cout << wsco << endl;
if( bsco==US ) cout << "worst case\n";
else cout << bsco << endl;
}
return 0;
}
0 意見:
張貼留言