问答题
请使用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<iOStream>usingnamespacestd;classDate{//日期类intyear,month,day;//年、月、日public:Date(intyear,intmonth,intday):year(year),month(month),day(day){}intgetYear()const{returnyear;}intgetMonth()const{returnmonth;}intgetDay()const{returnday;}};classPerson{//人员类charname[14];//姓名boolismale;//性别,为true时表示男性Datebirthdate;//出生日期public:Person(char*name,booliSmale,Datebirth_date)//**********found**********:________{strcpy(this->name,name);}constchar*getName()const{returnname;}boolisMale()const{returnismale;}DategetBirthdate()const{returnbirthdate;}//利用strcmp()函数比较姓名,返回一个正数、0或负数,分别表示大于、等于、小于intcompareName(constPerson&p)const{//**********found**********________}voidshow(){cout<<end1;cout<<name<<"<<(ismale"男":"女")<<¨<<"出生日期:"<<birthdate.getYear()<<"年"//显示出生年//**********found**********________//显示出生月<<birth_date.getDay()<<"日";//显示出生日}};voidsortByName(Personps[],intSize){//将人员数组按姓名排列为升序for(inti=0;i<size-1;i++){//采用选择排序算法intm=i;for(intj=i+1;j<size;j++)if(ps[j].compareName(ps[m])<0)m=j;if(m>i){PersonP=ps[m];ps[m]=ps[i];ps[i]=p;}}}intmain(){Personstaff[]={Person("张三",true,Date(1978,4,20)),Person("王五",false,Date(1965,8,3)),Person("杨六",false,Date(1965,9,5)),Person("李四",true,Date(1973,5,30))};constintsize=sizeof(staff)/Si—zeof(staff[0]);inti;cout<<end1<<"按姓名排序";cout<<end1<<"排序前:";for(i:0;i<size;i++)staff[i].show();sortByName(staff,size);cout<<end1<<end1<<"排序后:";for(i=0ji<size;i++)staff[i].show();cout<<end1;return0;}
【参考答案】
正确答案:(1)is_male(is_male),birth_date(birth_date) (2)returnst......
(↓↓↓ 点击下方‘点击查看答案’看完整答案、解析 ↓↓↓)