【说明】
设计一个评选优秀教师和学生的程序,其类结构如图6所示。当输入一系列教师或学生的记录后,将优秀学生及教师的姓名列出来。
【程序】
#include<iostream.h>
#include<stdio.h>
enum boolean False,True
class base
protected:
char name[8];
public:
void getname() cout<<"姓名:" ;cin>>name;
void printname() cout<<"姓名:"<<name<<endU3
virtual boolean isgood() =0;
class student: (1)
int num;
public:
void getnum()
cout<<"考试成绩:" cin>>num;
boolean isgood() return (2) ;
;
class teacher: (3) public base
int num;
public:
void getnum()
cout<<"每年发表论文数:" ;cin>>num;
boolean isgood() return (4) ;
;
void main()
base* p[50];
student * pstud;
teacher * ptech;
char ch;
int count =0;
do
cout<<"输入教师(t)或学生(s):"
cin>>ch;
if(ch ==’s’)
pstud = new student;
pstud ->getname();
pstud ->getnum();
p[count ++ ] = pstud;
else if(ch == ’t’)
ptech = newteacher;
ptech - >getname( )
ptech ->getnum();
p[count++]=ptech;
else
cout<<"输入错误<<endl;
cout<<"继续输入码(Y/n)";
cin>>ch;
while(ch == ’y’)
for(int i=0;i<count;i++)
if( (5) ) //若为优秀,则输出
p[i]->printname();
参考答案:public base (2)(mum>90) True:False
(3)public base (4)(num>3) True:False
(5)p[i]->isgood()==True
解析: 基类base中提供的一个纯虚函数作为判断类student和类 teacher的公共接口,且这两个类中都需要访问保护成员,所以(1)和(3)空中应填入的继承方式为“publi c base”。
评选优秀教师和学生的标准不同,所以类student和类teache分别定义了各自的函数isgood(),优秀学生的标准为考试成绩超过90分,所以(2)空中应填入“(mum>90)True:False”。优秀教师的标准为一年发表论文超过3篇,所以(4)空中应填人“(num>3)True: False”。
在主函数中指针数组P存放输入的数据,然后判断是否被评为优秀教师或学生。(5)空显然是要调用其函数isgood(),所以应填入“p[i]->isgood()==True”。