问题 问答题

使用VC6打开考生文件夹下的工程test22_3,此工程包含一个源程序文件test22_3.cpp,其中定义了用于表示考生的类 CStudent和它的派生类CGraduateStudent,但它们的定义并不完整。请按要求完成下列操作,将程序补充完整。
(1)定义CStudent的构造函数,函数含参数nm,它是char型的指针数据,请使用字符串函数将类数据成员name初始化。请在注释“//**1**”之后添加适当的语句。
(2)完成类CStudent的成员函数void addscore(double sc)的定义,将类数据成员score加上参数sc,请在注释“//**2**”之后添加适当的语句。
(3)添加类CGraduateStudent的成员函数void addpaper(int d)的定义,将int型的参数d的值加到类的数据成员paper上,请在注释“//**3**”之后添加适当的语句。
(4)调用对象sdt的成员函数addpaper使得该考生的论文数量变为10,将请在注释“//**4**”之后添加适当的语句。
输出结果如下:
Student Hanson
(Advisor:MichaelPhong)
Total paper is 10
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件test22_3.cpp清单如下:
#include<iostream.h>
#include<string.h>
class CStudent

private:
char name[30];
int code;
double score;
public:
CStudent(char* nm)

//**1**

CStudent()
void putname(char* nm) strcpy(name,nm);
void putcode(int d)code=d;
void putscore(double sc)score=sc;
void getname(char* nm)strcpy(nm,name);
double getcode()return code;)
double getscore()return score;
void addscore(double sc)

//**2**


class CGraduateStudent:public CStudent

private:
char advisor[30];
int paper;
public:
void putadvisor(char*nm) strcpy(advisor, nm);
void getadvisor(char*nm) strcpy(nm, advisor);
void putpaper(int d) paper=d;
//**3**
int getpaper() return paper;
;
void main()

CGraduateStudent sdt;
sdt.putname("Hanson");
sdt.putadvisor("MichaelPhong");
sdt.putpaper(8);
//**4**
char csname[30];
sdt.getname(csname);
char caname[30];
sdt.getadvisor(caname);
cout<<"Student"<<csname<<endl;
cout<<"(Advisor:"<<caname<<")"<<endl;
cout<<"Total paper is"<<sdt.getpaper()<<endl;

答案

参考答案:

(A)

strcpy(name,nm);

(B)

score+=sc;

(C)

void addpaper(int d){paper+=d;}

(D)

sdt.addpaper(B);

解析:

本题主要考查考生对于类的定义和使用对象调用成员函数的理解,注意认真的阅读主程序,弄清楚(4)中paper的原值为8。

单项选择题 A1/A2型题
单项选择题 A1型题