请打开考生文件夹下的解决方案文件proj3,其中使用友元函数访问类的私有数据成员,求出两个数据成员的大于1的最小公因子。请编写友员函数FriFun,使其输出结果为: Common denominator is 2 要求:补充编制的内容写在“

admin2020-04-07  35

问题 请打开考生文件夹下的解决方案文件proj3,其中使用友元函数访问类的私有数据成员,求出两个数据成员的大于1的最小公因子。请编写友员函数FriFun,使其输出结果为:
    Common denominator is 2
    要求:补充编制的内容写在“//********333********”与“//********666********”之间,不得修改程序的其他部分。
    注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。
    //proj3.h
    class FriFunClass
    {
      int a,b;
    public:
      FriFunClass(int i,int j){a=i;b=j;}
        friend int FriFun(FriFunClass x);  //友元函数
    };
      void writeToFile(const char *);

    //proj3.cpp
    #include<iostream>
    using namespace std;
    #include”prj3.h”
    int FriFun(FriFunClass x)
    {
    //********333********
    //由于函数FriFun()是类FriFunClass的友元函数,所以它可以直接访问a和b
    //********666********
    }
    int main()
    {
      FriFunClass n(10,20);
      if(FriFun(n))
      cout<<"Common denominator is"<<FriFun(n)  <<"\n";
      else cout<<"NO common denominator.\n";
      writeToFile("");
      return 0;
    }

选项

答案1 int min=x.a<x.b?x.a:x.b; //此处为取出x.a与x.b中的最小值 2 for(int i=2;i <=min; i++) //从i到min遍历数组 3 if(x.a%i==0 && x.b%i==0) 4 //如i能同时整除x.a来的x.b,则仅回i return i; 5 return-1;

解析 主要考查考生对友元函数的掌握情况,友元函数可以访问类的私有数据成员,题目要求函数求出两个数据成员的大于1的最小公因子,从2开始往上算,因此要同时可以被两个私有成员整除,这里用取余符号完成,取余为0即为整除。
转载请注明原文地址:https://jikaoti.com/ti/JwA0FFFM
0

最新回复(0)