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

admin2013-07-03  28

问题 阅读以下说明和Java程序,填充代码中的空缺,将解答填入答题纸的对应档内。
    【说明】
    某学校在学生毕业时要求对其成绩进行综合评定,学生的综合成绩(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表示。
    [Java代码】
    abstract class Student{
        protected String name;
        protected int stuNo;
    protected double GPA;    /*综合成绩*/
    protected int[][]grades;    /*各门课程成绩和学分*/
    //其他信息略
    public Student(int stuNo,String name,int[][]grades){
        this.stuNo=stuNo;this.name=name;this.grades=grades;
    }
      (1)  
    double computeWg(){
        int totalGrades=0,totalCredits=0:
            for(int i=0;i<grades.length;i++){
                totalGrades+=grades[0]*grades[1];
                totalCredits+=grades[1];
            }
            return(double)totalGrades/totalCredits;
            }
    }
    class ActStudent extends Student{
        private int Apoints;
        ActStudent(int stuNo,String name,int[][]grades,int Apoints){
          (2)  
        this.Apoints=Apoints;
        }
        public double getGPA(){
            return GPA=  (3)  
        }
    }
    Class CmpStudent extends Student{
   
   Private int[][]Awards;
    CmpStudent(int stuNo,String name,int[][]grades,int[][]awards){
      (4)  
    this.Awards=awards;
    }
    publ ic double getGPA(){
        int totalAwards=0;
    for(int I=0;i<Awards.length;i++){
        totalAwards+=Awards[0]*Awards[1];
    }
    return GPA=  (5)  
    }
  }
  public class GPASystem{//以计算3个学生的综合成绩为例进行测试
      public static void main(String[]args){
          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[][]e1={{2,3},{1,2)},e2={{1,3});//竞赛成绩
      Student student[]={
      new ActStudent(i01,”John”,g1,3),//3为活动分
      new ActStudent(102,”Zhang”,g2,0),
      new ActStudent(103,”Li”,g3,e2),
    };

    //输出每个学生的综合成绩
    for(int i=0;i<student.length;i++){
        System.out.println(  (6)  );
    }
  }
}

选项

答案(1)abstract double getGPA() 注:考生若在上述答案之前加public或pretected不扣分 (2)super(stuNo,name,grades) (3)computeWg()+Apoints或super.computeWg()+Apoints (4)super(stuNo,name,grades) (5)computeWg()+totalAwards或super.computeWg()+totalAwards (6)students[i].getGPA()

解析 本题的Java程序功能是计算学生的综合成绩(GPA)其中GPA由其课程加权平均成绩Wg与附加分Ag构成,即GPA=Wg+Ag。与试题五类似,首先定义了一个getGPA()函数。(1)填abstract double getGPA(),doub-le定义了GPA的值都为双精度浮点数。(2)是计算学生的活动的附加分,调用super()函数,括号内的变量用已经定义过的变量名替代,即super(stuNo,name,grades)。继续定义函数getGPA函数,引用了题目中给的公式GPA=Wg+Ag,因为该函数式在定义学生的活动附加分的函数中定义的,所以(3)应填computeWg()+Apoints。(4)是计算学生竞赛的附加分的函数,其中又调用了一次Student函数,所以同(2)一样填super(stuNo,name,grades)。(5)同(3)类似,需要填getGPA函数,引用了题目中给的公式GPA=Wg+Ag,与(3)不同的是,这次wg加的是竞赛的附加分所以(5)应填computeWg()+Awards。(6)是在主函数的for循环里面,将students的值赋值给GPA,所以(6)应填students.getGPA(),对GPA赋值并输出。
转载请注明原文地址:https://kaotiyun.com/show/tnjZ777K
0

最新回复(0)