打开考生文件夹下的解决方案文件proj1,此项目包含程序文件main.epp,其中有类MaxDivisor(“最大约数”)的定义和主函数main的定义。类MaxDivisor能够计算一个整数的最大约数,其中约数是指:对于一个整数N,除去1和它自身外,凡能整

admin2020-04-10  33

问题 打开考生文件夹下的解决方案文件proj1,此项目包含程序文件main.epp,其中有类MaxDivisor(“最大约数”)的定义和主函数main的定义。类MaxDivisor能够计算一个整数的最大约数,其中约数是指:对于一个整数N,除去1和它自身外,凡能整除N的数即为N的约数。
    程序中位于每个//ERROR ****** found ******
下的语句行有错误,请加以改正。
    更正后程序的输出应该是:
    555555的最大约数是:185185
    注意:只能修改每个//ERROR ******found******下的那一行,不要改动程序中的其他内容。
      #include<iostream>
      #include<iomanip>
      using namespace std;
      class MaxDivisor//最大约数
      {
      public:
          //ERROR ****found****
          MaxDivisor(int n=1){count=n;}
          void Print()const;
      private:
         const int count;
      };
      //ERROR *****found*****
      void Print()const
      {
         int i;
         for(i=count—1;i>1;i--)
         //ERROR *****found*****
            if(count/i==0)
            {
               cout<<count<<"的最大约数是:"<<i<<endl;
                    return;
              }
         cout<<count请打开考生文件夹下的解决方案文件proj2,该工程中包含一个程序文件main.cpp,其中有类Quadritic、类Root及主函数main的定义。一个Quadritic对象表示一个ax2+bx+c的一元二次多项式。一个Root对象用于表示方程ax2+bx+c=0的一组根,它的数据成员num_of_roots有3种可能的值,即0、1和2,分别表示根的3种情况:无实根、有两个相同的实根和有两个不同的实根。请在程序中的横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为(注:输出中的X~2表示x2):
    3X~2+4X+5=0.0    无实根
    4.5X^2+6X+2=0.0  有两个相同的实根:一0.666667和一0.666667
    1.5X^2+2X一3=0.0  有两个不同的实根:0.896805和一2.23014
    注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。
    #1nclude<lostream>
    #include<iomanip>
    {}include<cmath>
    using namespace std;
    class Root{  //一元二次方程的根
    public:
      const double x1;  //第一个根
      const double x2;  //第二个根
      const int num_of_roots;//不同根的数量:0、1或2
      //创建一个“无实根”的Root对象
      Root():x1(0.0),x2(0.0),num_Of_roots(0){}
      //创建一个“有两个相同的实根”的Root对象
      Root(double root)
    //********** found **********
         :__________{}
    //创建一个“有两个不同的实根”的Root对象
        Root(double  root1,double root2):x1(root1),x2(root2),mum_of_roots(2){}
      void show()const{  //显示根的信息
        cout<<"\t\t";
        switch(num_of_roots){
          case 0:
    //********** found **********
          ________
        case 1:
          cout;<<"有两个相同的实根:"<<x1<<"和"<<x2;break;
             default:
               cout<<"有两个不同的实根:"<<x1<<"和"<<x2;break;
        }
      }
    };
    class Quadratic{   //二次多项式
    public:
      const double a,b,c;//分别表示二次项、一次项和常数项等3个系数
      Quadratic(double a,double b,double c)
    //构造函数
    //**********found*********
         :____________{}
         Quadratic(Quadratic&x)  //复制构造函数
           :a(x.a),b(x.b),c(x.c){}
         Quadratic add(Quadratic x)const{
    //求两个多项式的和
        return QuadratiC(a+x.a,b+x.b,c+x.c);
      }
        Quadratic sub(Quadratic x)const{
    //求两个多项式的差
    //**********found**********
         ___________
        }
          double  value(double  x)const{
    //求二次多项式的值
        return a * x * x+b * x+c;
      }
      Root root()const{//求一元二次方程的根
        double delta=b * b一4 * a * c;
    //计算判别式
        if(delta<0.0)return Root;();
          if(delta==0.0)
          return Root(一b/(2 * a));
          double sq=sqrt(delta);
          return Root((一b+sq)/(2*a),  (一b—sq)/(2*a));
      }
      void show()const{  //显示多项式
        cout<<endl<<a<<"X^2"<<showpos<<b<<"X"<<C<<noshowpos;
      }
      void showFunction(){
    //显示一元二次方程
        show();
        cout<<"=0.0";
      }
    };
    int main(){
      Quadratic q1(3.0,4.0,5.0),q2(4.5,6.0,2.0),q3(q2.sub(q1));
        q1.showFunction();
        q1.root().show();
        q2.showFunction();
        q2.root:().show();
        q3.showFunction();
        q3.root().show();
        cout<<endl:
        return 0;
    }"没有约数"<<endl;
      }
      int main()
     {
        MaxDivisor obj(555555);
        obj.Print();
        return 0;
      }

选项

答案(1)MaxDivisor(int n=1):count(n){} (2)void MaxDivisor::Print()const (3)if(count%i==0)

解析 (1)MaxDivisor类定义中,count是const类型的整型变量,只能在成员初始化列表中完成初始化,不能在构造函数定义体内赋值,修改为:MaxDivisor(intn=1):count(n){}
    (2)Print函数是MaxDivisor类的成员函数,在函数定义时需要指定在MaxDivisor的命名空间中,修改为:void MaxDivisor::Print()const
    (3)Print成员函数的作用是输出count成员的最大公约数,从count一1开始遍历,逐个判断当前的i是否能整除count,第一个整除的i即为最大公约数,判断整除逻辑是count对i求模,结果为0表示整除,修改为:if(count%i==0)
转载请注明原文地址:https://kaotiyun.com/show/Wu8p777K
0

最新回复(0)