2023.5.10编程一小时打卡
一、问题描述:
给出下面的人员基类框架:
class Person
{
protected:
string name;
int age;
public:
Person();
Person (string p_name, int p_age);
void display () {cout<<name<<“:”<<age<<endl;}
};
建立一个派生类student,增加以下成员数据:
int ID;//学号
float cpp_score;//cpp上机成绩
float cpp_count;//cpp上机考勤
float cpp_grade;//cpp总评成绩
//总评成绩计算规则:cpp_grade = cpp_score * 0.9 + cpp_count * 2;
增加以下成员函数:
student类的无参构造函数
student类的参数化构造函数//注意cpp_grade为上机成绩和考勤的计算结果
void print()//输出当前student的信息
//其中cpp_grade输出保留一位小数
//输出格式为ID name cpp_grade
生成上述类并编写主函数,根据输入的学生基本信息,建立一个学生对象,计算其cpp总评成绩,并输出其学号、姓名、总评成绩。
输入格式: 测试输入包含若干测试用例,每个测试用例占一行(学生姓名 学号 年龄 cpp成绩 cpp考勤)。当读入0时输入结束,相应的结果不要输出。
二、解题思路:
首先,定义一个Person类并对其进行定义数据成员name,age,然后定义构造函数对其数据进行初始化,再定义一个成员函数对其数据进行输出。然后定义一个继承类student类,先对其进行定义成员数据ID,成绩等,然后进行定义一个输出其成员数据的成员函数。在主函数中,首先定义所需数据的变量,利用输入数据的特点用while进行循环输入name时是否为零,若为零,则结束程序,若不为零,继续输出学生信息,知道输出为零为止。
三、代码实现:
1 #include <iostream> 2 #include<string> 3 #include<iomanip> 4 using namespace std; 5 class Person 6 { 7 protected: 8 string name; 9 int age; 10 public: 11 Person(); 12 Person (string p_name, int p_age); 13 void display() 14 { 15 cout<<name<<":"<<age<<endl; 16 } 17 }; 18 Person::Person (string p_name, int p_age) 19 { 20 name=p_name; 21 age=p_age; 22 } 23 class student:public Person 24 { 25 private: 26 int ID; 27 float cpp_score; 28 float cpp_count; 29 float cpp_grade; 30 public: 31 student(){} 32 student(string p_name, int p_age,int i,float s,float c):Person (p_name,p_age) 33 { 34 ID=i; 35 cpp_score=s; 36 cpp_count=c; 37 cpp_grade=s*0.9+c*2; 38 } 39 void print(); 40 }; 41 void student::print() 42 { 43 cout<<ID<<" "<<name<<" "; 44 cout<<fixed<<setprecision(1)<<cpp_grade<<endl; 45 } 46 int main() 47 { 48 int ID; 49 string name;int age; 50 float cpp_score; 51 float cpp_count; 52 cin >> name ; 53 while(name!="0"){ 54 cin >> ID >>age>> cpp_score >>cpp_count; 55 student a(name,age,ID,cpp_score,cpp_count); 56 a.print(); 57 cin >> name ; 58 } 59 return 0; 60 }

浙公网安备 33010602011771号