[说明]
设计一个评选优秀教师和学生的程序,其类结构如下图所示。当输入一系列教师或学生的记录后,将优秀学生及教师的姓名列出来。
[C++程序]
#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<<endU
virtual boolean isgood () =0;
class student: (1)
int num;
public :
voici getnum ()
cout<<"考绩:"; cin>>num;
boolean isgood() return (2) ;
;
class teacher: (3)
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
cunt<<"输入教师(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();
(5)处填()
参考答案:p[i]->isgood()=True
解析:
基类base中提供的一个纯虚函数作为判断类student和类teacher的公共接口,且这两个类中都需要访问保护成员,所以空(1)和(3)中应填入的继承方式为“public base”。
评选优秀教师和学生的标准不同,所以类student和类teacher分别定义了各自的函数isgood(),优秀学生的标准为考试成绩超过90分,所以空(2)中应填入“(mum>90) True:False”。优秀教师的标准为一年发表论文超过3篇,所以空(4)中应填入“(num>3)True:False”。
在主函数中指针数组p存放输入的数据,然后判断是否被评为优秀教师或学生。空(5)显然是要调用其函数isgood(),所以应填入“p[i]->isgood()=True”。