司法三等申論題
110年
[檢察事務官電子資訊組] 程式語言
第 一 題
一、以下為 C++定義類別 Student 與 Class 的程式碼,請撰寫一「班級成績計算」的 C++程式,首先讓使用者輸入兩班學生(每班各有 3 位學生)的姓名與國文、英文、數學課的成績,並符合以下的要求:(25 分)
為類別 Class 撰寫一建構元函式,將班上 3 位學生的國文、英文、數學的成績、該班學生成績的平均分數與最高總分設為 0
為類別 Class 撰寫一方法 cal( ),計算該班學生的平均分數
為類別 Class 撰寫一方法 findTop( ),找出該班學生的最高總分與其所在位置
撰寫運算子>多載(overloading)功能,可以比較兩班的最高總分,並回傳是那一班的最高總分較高
撰寫主程式 main( )以驗證此程式的正確性
類別 Student 與 Class 的程式碼如下:
class Student { //學生類別定義
public:
string name; //學生姓名
int chn,eng,math; //學生國英數成績
};
class Class { //班級類別定義
public:
Student student[3]; //每班 3 位學生
double avg; //該班學生的平均分數
int top, top_index; //該班學生的最高總分與其所在位置
public:
Class(); //建構元函式將類別內變數初值設為 0
int operator>(Class &win); //定義運算子>的多載,以回傳最高
//總分班級
void cal(void); //計算該班學生的平均分數
void findTop(void); //找出該班學生的最高總分與其所在位置
};
程式執行範例如下:
第 1 班第 1 位學生名字:大明
請依序輸入他的國英數成績:85 66 92
第 1 班第 2 位學生名字:阿美
請依序輸入他的國英數成績:92 85 78
第 1 班第 3 位學生名字:小凱
請依序輸入他的國英數成績:96 92 90
第 2 班第 1 位學生名字:大雄
請依序輸入他的國英數成績:65 82 72
第 2 班第 2 位學生名字:阿吉
請依序輸入他的國英數成績:98 92 99
第 2 班第 3 位學生名字:小文
請依序輸入他的國英數成績:90 92 95
第 1 班平均成績:86.22
第 2 班平均成績:87.22
最高分在第 2 班是阿吉,總分為 289 分
📝 此題為申論題
思路引導 VIP
本題為典型的 C++ 物件導向與運算子多載實作題。解題時應先完成各個類別方法的實作(包含建構子初始化、成績總計及最大值搜尋),接著針對 operator> 進行多載以比較兩班最高分,最後在 main() 透過迴圈處理資料的輸入輸出,並使用 <iomanip> 格式化輸出以符合範例要求,同時務必於註解中釐清變數的生命週期。
🤖
AI 詳解
AI 專屬家教
【破題】 本題旨在評量 C++ 物件導向程式設計的基本概念,包含類別(Class)的方法實作、建構子(Constructor)的初始設定、運算子多載(Operator Overloading)的應用,以及在主程式中對物件陣列的操作。以下給出符合語法標準且經過格式化的完整 C++ 程式碼。 【程式實作】
▼ 還有更多解析內容