问答题
请使用VC6或使用[答题]菜单打开考生文件夹proj1下的工程proj1。程序中位于每个“//ERROR ****found****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:
Name:Smith Age:21 ID:99999 CourseNum:12 Record:970
注意:只修改每个“//ERROR ****found****”下的那一行,不要改动程序中的其他内容。
#include <iostream>
using namespace std;
class StudentInfo
{
protected:
//ERROR ********** found**********
char Name[];
int Age;
int ID;
int CourseNum;
float Record;
public:
//ERROR ********** found**********
void StudentInfo(char * name, int age, int ID, int courseNum, float record);
// ERROR ********** found**********
void ~StudentInfo () { delete [] Name; }
float AverageRecord() {
return Record/CourseNum;
}
void show()const;
};
StudentInfo:: StudentInfo (char * name, int age, int ID, int courseNum, float record)
{
Name = strdup(name);
Age = age;
this->ID = ID;
CourseNum = courseNum;
Record = record;
}
void StudentInfo::show ()
{
cout <<"Name: "<<Name<<" Age: "<<Age<<" ID: "<<ID
<<" CourseNum: " << CourseNum <<"Record: "<<Record<
【正确答案】(1)char*Name;
(2)StudentInfo(char*name, int age, int ID, int courseNum, float record);
(3)void StudentInfo::show()const
【答案解析】[考点] 本题考查StudentInfo类,其中涉及动态数组、构造函数、析构函数和成员函数。
[解析] (1)主要考查考生对字符指针的掌握,由构造函数的函数体Name=strdup(name);语句,可知Name应该为字符指针。
(2)主要考查考生对构造函数的掌握,构造函数前不能添加任何返回类型。
(3)主要考查考生对const函数的掌握,由类的定义voidshow()const;可知,show函数是const函数。