学生成绩计算(继承和多态)
生活随笔
收集整理的這篇文章主要介紹了
学生成绩计算(继承和多态)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- 題目描述
- 輸入
- 輸出
- 輸入樣例
- 輸出樣例
- 代碼
題目描述
定義Person類具有姓名、年齡等屬性,具有輸出基本信息的display函數。
選修《面向對象程序設計》課程的學生在Person類的基礎上,派生出子類:免聽生和非免聽生。子類繼承父類成員,新增其他成員、改寫display函數。
非免聽生具有平時成績、考試成績和總評成績三個屬性,總評成績根據(平時成績40%+考試成績60%)計算的結果,85分(包含)以上為A,75分(包含)-85分(不包含)為B,65分(包含)-75分(不包含)為C,60分(包含)-65分(不包含)為D,60分(不包含)以下為F。
免聽生只有考試成績和總評成績兩個屬性,總評成績100%根據考試成績對應上述等級制成績。
定義上述類并編寫主函數,輸入類型符號,若輸入R,根據學生基本信息、平時成績和考試成績,建立非免聽生對象,若輸入S,根據學生基本信息、考試成績,建立免聽生對象。計算學生的總評成績,并輸出。
輸入
測試次數t
隨后每行輸入學生類型相關信息
輸出
每個學生基本信息和總評成績
輸入樣例
2
R cindy 18 100 100
S sandy 28 59
輸出樣例
cindy 18 A
sandy 28 F
代碼
#include<iostream> using namespace std; class Person{protected:string name;int age;public:Person(){}Person(string n,int a):name(n),age(a){}void display(){cout<<name<<" "<<age<<" ";} }; class RMian:virtual public Person{private:int num1,num2;double sum;public:RMian(){}RMian(string n,int a,int n1,int n2):Person(n,a),num1(n1),num2(n2){}char kind(){sum=num1*0.4+num2*0.6;if(sum>=85)return 'A';else if(sum>=75&&sum<85)return 'B';else if(sum>=65&&sum<75)return 'C';else if(sum>=60&&sum<65)return 'D';else return 'F';}void display(){Person::display();cout<<kind()<<endl;} }; class SMian:virtual public Person{private:int num1;double sum;public:SMian(){}SMian(string n,int a,int n1):Person(n,a),num1(n1){}char kind(){sum=num1;if(sum>=85)return 'A';else if(sum>=75&&sum<85)return 'B';else if(sum>=65&&sum<75)return 'C';else if(sum>=60&&sum<65)return 'D';else return 'F';}void display(){Person::display();cout<<kind()<<endl;} }; int main(){int n1,n2,a,t;char k;string n;cin>>t;while(t--){cin>>k;if(k=='R'){cin>>n>>a>>n1>>n2;RMian R1(n,a,n1,n2);R1.display();}if(k=='S'){cin>>n>>a>>n1;SMian R1(n,a,n1);R1.display();}}return 0; }總結
以上是生活随笔為你收集整理的学生成绩计算(继承和多态)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 个人星座全解
- 下一篇: unity读取本地硬盘照片