问答题 请使用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.b?x.a:x.b; //此处为取出x.a与x.b中的最小值 for(inti=2;i<=min;i++) //从i到min遍历数组 if(x.a%i==0&&x.b%i==0) //如i能同时整除x.a来的x.b,则仅回i returni; return一1;
【答案解析】解析:主要考查考生对友元函数的掌握情况,友元函数可以访问类的私有数据成员,题目要求函数求出两个数据成员的大于1的最小公因子,从2开始往上算,因此要同时可以被两个私有成员整除,这里用取余符号完成,取余为0即为整除。