问答题 请使用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()const { cout << "Name: " << Name <<"Age: " << Age<<"ID: " << ID <<"CourseNum: " << CourseNum <<"Record: " <<Record <<endl; } int main() { StudentInfo st ("Smith", 21, 99999, 12, 970); st.show(); return 0; }
【正确答案】(1)char*Name; (2)StudentInfo(char*name, int age, int ID, int courseNum, float record); (3)~StudentInfo(){delete[]Name;}
【答案解析】[考点] 本题考查StudentInfo类,其中涉及构造函数、析构函数和成员函数。 [解析] (1)根据构造函数的定义可知,Name应定义为指针变量。 (2)主要考查考生对构造函数定义的掌握,构造函数前不能添加任何类型。 (3)主要考查考生对析构函数定义的掌握,析构函数前不能添加任何类型。