问题 问答题

【说明】
本程序用于评选优秀教师和学生。当输入一系列教师或学生的记录后,将优秀学生及教师的姓名列出来。其类结构如下图所示:


【程序】
#include <iostream.h>
#include <stdio. h> class base

protected:
char name[8];
public:
void getname()cout<<"name:"; cin>>name;
void printname()cout<<"name:"<<name<<endl;
(1)
;
class student: (2)

int num;
public:
void getnum()
cout<<"score:"; cin>>num;
bool isgood()
return (3)
;
class teacher: (2)

int num;
public:
void getnum()
cout<<"paper:"; cin>>num;
bool isgood()
return (num>3)true:false;
void main()

base *p[50];
student *pstud;
teacher *ptech;
char ch;
int count=0;
do
cout<<"input teacher(t) or student(s):";
cin>>ch;
if(ch==’s’)

pstud=new student;
pstud->getname();
pstud->getnum();
p[count++]=pstud;

else if(ch==’t’)

(4)
ptech->getname();
ptech->getnum();
p[count++]=ptech;

else
cout<<"input is wrong"<<endl;
cout<<"continue to iput(y/n)";
cin>>ch;
while(ch==’y’);for(int i=0;i<count;i++)
if( (5) )
p[i]->printname();

答案

参考答案:(1)virtual bool isgood()=0; (2)public base (3)(num>90)true:false;
(4)ptech=new teacher; (5)p[i]->isgood()==true

解析:

[分析]:
本题考查C++中类的继承、虚函数和其他一些语法结构。
题目要求本题的程序用于评选优秀教师和学生,在输入一系列教师或学生的记录后,能将优秀学生及教师的姓名列出来。根据题目中的图,对于学生来说,只要拿其考试成绩与90比较大小就可;对于老师来说,只要一年内发表的论文超过3篇就可以。
下面我们来分析代码。代码给出了三个类的定义和一个主函数,类base是类student和类teacher的基类。
第(1)空处在基类base的定义里面,结合题目中的要求,我们知道类base中需要定义一个isgood()虚函数,但在类base的代码中并没有看到对虚函数isgood()的定义,因此,第(1)空应该是定义虚函数isgood()。在C++中定义虚函数的方法是在函数的定义前加一个关键字virtual,所以,此空应填virtual bool isgood()=0。
第(2)空处的作用很明显,是用在继承类的定义时,表明其对父类的继承方式,由继承类中继承父类的成员方法getname()仍然是公有的可以知道,子类对父类的继承方式是公有继承。所以,此空答案为public base。
第(3)空处的作用是在类student中重新定义虚函数isgood(),其要完成的任务在上面分析中已经知道,拿学生的考试成绩与90比大小,如果大于90返回true,否则返回 false。因此,此空答案为(num>90)true:false。
在做第(4)空时,我们如果结合前面那个订语句下面的代码就很容易明白了,此空要完成的任务是动态创建一个teacher对象,因此,答案为ptech=new teacher。
第(5)空所在的位置是一个条件选择语句的条件,再结合全程序来看,不难发现此时程序还没有实现对优秀学生及教师的姓名的列出,而第(5)空下面的语句刚好用来列出姓名,那么第(5)空的功能是判断是否为优秀学生或老师,调用函数isgood()可以实现。因此,此空答案为p[i]->isgood()==true。

选择题
填空题