问答题

请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程proj3,其中使用友元函数访问类的私有数据成员,求出两个数据成员的大于1的最小公因子。请编写友员函数FriFun,使其输出结果为:rnmmondenominatoris2要求:补充编制的内容写在“//**********333**********”与“//**********666**********”之间,不得修改程序的其他部分。注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。//proj3.hclassFriFunClass{inta,b;public:FriFunClass(inti,intj){a=i;b=j;)friendintFriFun(FriFunClasSX);//友元函数};voidwriteToFile(constchar*);//proj3.cpp#include<iostream>usingnamespacestd;#include"prj3.h"intFriFun(FriFunClassx){//********333********//由于函数FriFun()是类FriFunClass的友元函数。所以它可以直接访问a和b//********666********}intmain(){FriFunClassn(10,20);if(FriFun(n))cout<<"Commondenominatoris"<<FriFun(n)<<"\n";elsecout<<"NOcommondenominator.\n";writeToFile("");return0;}

【参考答案】

正确答案:intmin=x.a<x.bx.a:x.b; //此处为取出x.a与x.b中的最小值 for(inti=2;i......

(↓↓↓ 点击下方‘点击查看答案’看完整答案、解析 ↓↓↓)
热门 试题

问答题
请使用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;}