下列程序段中,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;
}
第1题:
下列程序在构造函数和析构函数中申请和释放类的私有成员,请完成该程序。
class Myclas{
int *x;
public:
MyClas(int n);
~MyClas();
};
MyClas::MyClas(intn){
【 】;
}
MyClas::~MyClas(){
【 】;
}
第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的内容。
第3题:
第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;”。