软题库 学习课程
当前位置:信管网 >> 在线考试中心 >> 试题查看
试题题型【分析简答题】
试题内容

阅读以下说明和C++代码,填充代码中的空缺,将解答填入答题纸的对应栏内。
【说明】
某学校在学生毕业时要对其成绩进行综合评定,学生的综合成绩(GPA)由其课程加权平均成绩(Wg)与附加分(Ag)构成,即GPA= Wg +Ag。
设一个学生共修了n门课程,则其加权平均成绩 (Wg) 定义如下:

其中 ,gradei 、Ci  分别表示该学生第 i 门课程的百分制成绩及学分。
学生可以通过参加社会活动或学科竞赛获得附加分(Ag)。学生参加社会活动所得的活动分(Apoints)是直接给出的,而竞赛分(Awards)则由下式计算(一个学生最多可参加m项学科竞赛):

其中 ,li  和 Si  分别表示学生所参加学科竞赛的级别和成绩。
对于社会活动和学科竞赛都不参加的学生,其附加分按活动分为0计算。
下面的程序实现计算学生综合成绩的功能,每个学生的基本信息由抽象类Student描述,包括学号(stuNo)、姓名(name) 、课程成绩学分(grades)  和综合成绩 (GPA)等,参加社会活动的学生由类ActStudent描述,其活动分由Apoints表示,参加学科竞赛的学生由类CmpStudent描述,其各项竞赛的成绩信息由awards表示。
【 C++代码】
#include
#include
using namespace std;
const  int  N=5;       /*课程数*/
const  int  M=2;       /*竞赛项目数*/

class Student{
protected:
int   stuNo; string name;
double GPA;            /*综合成绩*/
int (*grades) [2];     /*各门课程成绩和学分*/
public:
Student  (   const  int  stuNo ,const  string  &name ,int  grades[ ] [2]  ){
this->stuNo   =  stuNo; grades;   this->name   =   name;   this->grades    =
grades;
}
virtual  ~Student( ) { }
int getStuNo( )    {/*实现略*/  }
string getName( )      {/*实现略*/ }
(1)    ;
double  computeWg   ( ){
int  totalGrades  =   0 ,totalCredits  =   0;
for  (int  i =  0;  i < N; i++) {
totalGrades += grades [i] [0] * grades [i] [1];   totalCredits +=
grades [i]  [1];
}
return  GPA  =(double)totalGrades   /  totalCredits;
}
};
class ActStudent :  public  Student  {
int  Apoints;
public:
ActStudent(const int stuNo ,const string &name ,int gs[ ] [2] ,int
Apoints)
:   (2)  {
this->Apoints = Apoints ;
}
double  getGPA ( ) {  return GPA = (3)   ;}
};
class CmpStudent: public Student{
private:
int (*awards) [2];
public:
CmpStudent   (const  int  stuNo ,const  string  &name ,int  gs[] [2] ,int
awards [ ] [2])
:  (4)    {this->awards   =   awards;}
double  getGPA( )    {
int Awards  =  0;
for  (int  i =  0;  i < M; i++) {
Awards  +=  awards [i] [0]   *  awards [i] [1];
}
return GPA  =    (5) ;
}
}
int main ( )
{   //以计算 3 个学生的综合成绩为例进行测试
int g1[ ] [2]  =  {{80 ,3} ,{90 ,2} ,{95 ,3} ,{85 ,4} ,{86 ,3}} ,
g2[ ][2]   =  {{60 ,3} ,{60 ,2} ,{60 ,3} ,{60,4} ,{65,3}} ,
g3[ ] [2] = {{80,3} ,{90,2} ,(70 ,3} ,{65,4} ,{75,3}};  //课程成绩
int  c3[ ] [2] = {{2 ,3} ,{3,3}};                                                     //竞赛成绩
Student*  students[3]   =   {
new  ActStudent   (101,"John" ,g1,3) , //3 为活动分
new  ActStudent   (102 ,"Zhang" ,g2 ,0),
new  CmpStudent   (103 ,"Li" ,g3 ,c3) ,
};
//输出每个学生的综合成绩
for(int  i=0;  i<3; i++)
cout<< (6) <delete  *students;
return 0;
}

查看答案

相关试题