问答题
请使用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 { returnend 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_term* 0.5 +0.5;
}
int main () {
char English[ ] ="英语";
Score score (English, "12345678", 68, 83, 92);
cout <<"学号:" <<score. getID () <<"";
cout <<"课程:" <<score. getCourse()<<"";
cout <<"总评成绩:" <<score.getFihal () <<endl;
return 0;
}
【正确答案】(1)strcpy(student_jd, the_jd);
(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函数、函数返回值和成员函数的掌握情况,在含有动态数组或者字符数组的类中,常常会涉及strcpyr、strlen等函数的使用,要注意这些函数的参数要求。