下列程序段中,A_class的成员函数Variance()可求出两数的平方差,请改写该程序段,把Variance()函数从A_class类中分离出来,用友元函数来实现该函数的功能。class A_class { private: intx,y,t; public: A_class(int i,int j):x(i),y(j) { if(y>x){t=x;x=y;y=t;} } intVariance(){return x*x-y*y;} //其它函数从略};void main() {

题目

下列程序段中,A_class的成员函数Variance()可求出两数的平方差,请改写该程序段,把Variance()函数从A_class类中分离出来,用友元函数来实现该函数的功能。

class A_class {

 private:

   intx,y,t;

 public:

   A_class(int i,int j):x(i),y(j) {

     if(y>x){t=x;x=y;y=t;}

   }

 intVariance(){return x*x-y*y;}

 //其它函数从略

};

void main() {

 A_classA_obj(3,5);

 cout<<"Result:"<<A_obj.Variance()<<endl;

}


相似考题
更多“下列程序段中,A_class的成员函数Variance()可求出两数的平方差,请改写该程序段,把Va ”相关问题
  • 第1题:

    下列程序在构造函数和析构函数中申请和释放类的私有成员,请完成该程序。

    class Myclas{

    int *x;

    public:

    MyClas(int n);

    ~MyClas();

    };

    MyClas::MyClas(intn){

    【 】;

    }

    MyClas::~MyClas(){

    【 】;

    }


    正确答案:x=new int(n)delete x
    x=new int(n),delete x 解析:在类的构造函数中,是申请内存空间,并使指针x指向构造函数的形参n,所以构造函数的函数体应为:x=newint(n);。在析构函数中,是释放类的私有成员,即指针变量x,所以析构函数的函数体应该为deletex;。

  • 第2题:

    程序test.C的功能是:把S字符串中的所有字母改写成该字母的下一个字母,字母2改写成字母a,字母z改写成字母 A,其他字符不做改变。 请考生编写函数chg(char*s)实现程序要求,最后调用函数readwriteDAT把结果输出到文件0ut.dat中。例如:S字符串中原有的内容为:Mn.123xyz,则调用该函数后,结果为:N0.123Ayz。 注意:部分源程序存在test.c文件中。 请勿改动数据文件in.dat中的任何数据、主函数main和输出数据函数read writeDAT的内容。


    正确答案:
    【审题关键句】把str字符串中的所有字母改写成该字母的下一个字母。
    【解题思路】
    ①定义局部字符变量ch和字符指针变量P,并使其指向字符串S。
    ②当P所指的字符非空时,把字符*p赋给字符ch,当字符ch不是字母Z或者’Z’时,把字符ch的ASCII码值加1,变成其下一个字符的ASCII码,并把这个值赋给字符*p,否则,如果字符ch是字符Z,则把字符*p的设置为字符’a’,否则,如果字符ch是字符’Z’,则把字符*p的设置为字符’Af,字符指针变量加1,使其指向字符串s的下一个字符,在下一次循环中处理。
    【参考答案】

  • 第3题:

    有下列程序段AGAIN:MOVES:[DI],ALINC.DILOOPAGAIN下列指令中()。可完成与上述程序段相同的功能。

    A.REPMOVSB
    B.REPLODSB
    C.REPSTOSB
    D.REPESCASB

    答案:C
    解析:

  • 第4题:

    下列给定程序中,函数fun的功能是:从整数l0-55,查找能被3整除且有一位上的数值是5的数,把这些:故放在b所指的数组中,这些数的个数作为函数值返回。规定函数中al放位数,a2放十位数。

    请改正程序中的错误,使它能得出正确的结果。

    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

    试题程序:


    正确答案:

  • 第5题:

    下列给定程序中,函数fun()的功能是:求出数组中最大数和次最大数,并把最大数和b[0]中的数对调、次最大数和b[1]中的数对调。

    请修改程序中的错误,得出正确的结果。

    注意:不要改动main()函数,不能增行或删行,也不能更改程序的结构。

    试题程序:


    正确答案:

    (1)错误:m=j;
    正确:voidfun(int*b,intn)
    (2)错误:voidfun()
    正确:m=i;
    【解析】本题中函数的功能是求出数组中最大数和次最大数。解题思路是首先求出数组中最大数和次最大数,然后将最大数和次最大数分别放到数组的第一位和第二位。
    第一个错误标识下“voidfun(int*b,intn);”函数的定义语法有误,根据C语言语法函数定义后面不应该加“;”,所以“voidfun(int*b,intn);”应该改为“voidfun(int*b,intn)”。
    第二个标识符下for循环逐个对m个数据进行选择判断,原题中“m=0;”语句将m值设置为0,在循环中m的值始终是0,不会改变,根据“for(i=0;i<2;i++)”语句中的循环条件,“m=0;”改为“m=i;”。