操作题   请使用VC6或使用【答题】菜单打开prog1下的工程prog1。此工程中包含程序文件main.cpp,其中有类Score(“成绩”)和主函数main的定义。程序中位于每个“// ERROR ****found****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:
    学号:12345678  课程:英语  总评成绩:85
    注意:只修改每个“// ERROR ****found****”下的一行,不要改动程序中的其他内容。
    #include <iostream>
    using namespace std;
    class Score{
    public:
    Score (const char * the_course, const char * the_id, int the_normal, int the_midterm, int the_end_of_term}
    : course(the_course), normal(the_normal), midterm(the_midterm), end_of_term(the_end_of_term) {
    // ERROR *******found*******
    strcpy (the_id, student_id);
    }
    const char * getCourse() const {return course;}  //返回课程名称
    // ERROR *******found*******
    const char * getID() const {return &student_id;}  //返回学号
    int getNormal() const {return normal;}  //返回平时成绩
    int getMidterm() const {return midterm;}
    //返回期中考试成绩
    int getEndOfTerm() const {return end_of_term;}  //返回期考试成绩
    int getFinal() const;  //返回总评成绩
    private:
    const char * course;  //课程名称
    char student_id[12];  //学号
    int normal;  //平时成绩
    int midterm;  //期中考试成绩
    int end_of_term;  //期考试成绩
    };
    //总评成绩中平时成绩占20%,期中考试占30%,期考试占50%,最后结果四舍五入为一个整数
    // ERROR *******found*******
    int getFinal() const {
    return normal * 0.2 + midterm * 0.3 + end_of_terms 0.5 + 0.5;
    }
    int main() {
    char English[] = '英语';
    Score score (English, '12345678',68,83,92);
    cout << '学号:' << score.getID() << ' ';
    cout << '课程:' << score.getCourse() << ' ';
    cout << '总评成绩:' << score.getFinal() << endl;
    return 0;
    }
 
【正确答案】(1)strcpy(student_id,the_id); (2)const char*getID() const {return student_id;} (3)int Score::getFinal() const { 答案考生文件夹
【答案解析】[考点] 本题考查的是Score类,其中涉及动态数组、构造函数、strcpy函数、const函数和成员函数。strcpy()函数和strlen()函数等经常会考到,要注意它们的参数要求。类的成员函数在类外定义时需要加上类名的作用域符。 (1)主要考查考生对strcpy()函数的掌握情况,strcpy(参数一,参数二)函数的功能是将参数二的字符串复制给参数一,因此在这里student_id应该位于参数一的位置,即strcpy(student_id,the_id);。 (2)主要考查考生对函数返回值的掌握情况,根据注释:返回学号可知学号应该由一个字符串组成。再看函数要返回的类型:const char*,可知要返回一个char型指针,也就是一个char型数组,而&student_id是一个char。型数组指针,因此直接写student_id即可。 (3)主要考查考生对类的成员函数的掌握情况,因为getFinal函数是Score类的成员函数,所以在定义时要加上类名和作用域符,即Score::。 主要考查考生对strcpy函数、函数返回值和成员函数的掌握情况,在含有动态数组或者字符数组的类中,常常会涉及strcpy、strlen等函数的使用,要注意这些函数的参数要求。