题库 题库

【简答题】

请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,该工程中包含一个程序文件main.cpp,其中有日期类Date、人员类Person及排序函数sortByName和主函数main的定义。请在程序中的横线处填写适当的代码并删除横线,以实现上述类定义和函数定义。此程序的正确输出结果应为:
按姓名排序
排序前:
张三 男 出生日期:1978年4月20日
王五 女 出生日期:1965年8月3日
杨六 女 出生日期:1965年9月5日
李四 男 出生日期:1973年5月30日
排序后:
李四 男 出生日期:1973年5月30日
王五 女 出生日期:1965年8月3日
杨六 女 出生日期:1965年9月5日
张三 男 出生日期:1978年4月20日
注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。
#include
using namespace std;
class Date{//日期类
int year,month,day;//年、月、日
public:
Date(int year,int month,int day):year(year),month(month),day(day){}
int getYear()const{return year;}
int getMonth()const{return month;}
int getDay()const{return day;}
};
class Person{ //人员类
char name[14];//姓名
bool is—male;//性别,为true时表示男性
Date birth—date;//出生日期
public:
Person(char*name,bool is—male,Date birth_date)
//***************found***************
:——————
{
{
strcpy(this一>name,name);
}
const char * getName()const{return name;}
bool isMale()const{return is—male;}
Date getBirthdate()const{return birth—date;}
//利用strcmp()函数比较姓名,返回一个正数、0或负数,分别表示大于、等于、小于
int compareName(const Person&p)const{
//***************found*****************
————}
void show(){
cout<
cout<<NAME<<”<<(IS_MALE?”男”:”女”)<<”<<”出生日期:”<<BIRTH—DATE.GETYEAR()<
//**************found**************
__________________________//显示出生月
<< “birth—date.getDay()<<”日”;//显示出生日
}
};
void sortByName(Person ps[],int size){
//将人员数组按姓名排列为升序
for(int i=0;i<SIZE一1;I++){
//采用选择排序算法
int m=i;
for(int j=i+1;j<SIZE;J++)
if(ps[j].eompareName(ps[m])<0)
m=j;
if(m>i){
Person P=ps[m];
ps[m]=ps[i];
ps[i]=p;
}
}
}
int main(){
Person staff[]={
Person(”张三”,true,Date(1978,4,20)),
Person(”王五”,false,Date(1965,8,3)),
Person(”杨六”,false,Date(1965,9,5)),
Person(”李四”,tme,Date(1973,5,30))
};
const int size=sizeof(staff)/sizeof(staff[0]);
int i;
eout<<ENDL<
cout<<ENDL<
for(i=0;i
sortByName(staff,size);
cout<<ENDL<<ENDL<
for(i_0;i
cout<
return 0;
{

参考答案

(1)is—mAlE(is—mAlE),Birth—DAtE(Birth—DAtE)
(2)rEtum strEmp(nAlnE,P.GEtNAmE());
(3)“Birth—DAtE.GEtMonth()“”月”

相关试题

单选题 由于常对象不能被更新,因此(  )。 查看答案
单选题 下列情况中,不会调用拷贝构造函数的是(  )。 查看答案
单选题 为了提高函数调用的实际运行速度,可以将较简单的函数定义为( )。 查看答案
单选题 软件设计中划分模块的一个准则是( )。 查看答案
单选题 有如下程序段:
int i=0,J=1;
nt&r=i;//④ ’ r=j;//②
int * P=&i;//③ * P=&r;//④
其中会产生编译错误的语句是(  )。
查看答案
单选题 下列关于C++预定义流对象的叙述中,正确的是( )。 查看答案
单选题 如下函数模板:
templateT square(T x){return x*x;} 其中T是(  )。
查看答案
单选题 有如下类定义:
class B
{
public:void funl(){}
private:void fun2(){}
protected:void fun3(){}
};
class D:public B
j
protected:void fun4(){}
};
若obj是类D的对象,则下列语句中不违反访问控制权限的是(  )。
查看答案
单选题 有如下程序:
#include
using namespace std;
class Base{
protected:
Base(){cout<<’A’;}
Base(char C){cout<<C;}
};
class Derived:public Base{
public:
Derived(char C){tout<<C;}
};
int main(){
Derived dl(’B’);
retum 0;
}
执行这个程序的输出结果是(  )。
查看答案
单选题 执行下列语句段后,输出字符“*”的个数是(  )。
for(int i=50;i>1;--i) Cout<<'*':
查看答案
单选题 支持子程序调用的数据结构是(  )。 查看答案
单选题 已知Value是一个类,value是Value的一个对象。下列以非成员函数形式重载的运算符函数原型中,正确的是( )。 查看答案
单选题 下列数据结构中,能够按照“先进后出”原则存取数据的是( )。 查看答案
单选题 下面的程序中,错误的语句是(  )。
①#inClude
②void main()
③{
④ int *p=new int[1];
⑧P=9;
⑥cout<<.*P<
⑦delete[]p;
⑧}
查看答案
单选题 有如下程序:
#include
using namespace std;
class Pair{
int m,n;
public:
Pair(int j,int k):m(j),n(k){}
int get(){return m;}
int get()const{return m+n;}
};
int main(){
Pair a(3,5);
const Pair b(3,5);
tout<<A.GET()’<
return U:
}
执行这个程序的输出结果是(  )。
查看答案
单选题 当使用fstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为( )。 查看答案
单选题 下面关于运算符重载的描述错误的是( )。 查看答案
单选题 C++中的模板包括(  )。 查看答案
单选题 下列运算符不能重载为友元函数的是( )。 查看答案
单选题 有三个关系R、S和T如下

由关系R和s通过运算得到关系T,则所使用的运算为( )。
查看答案