}
};
intSample:
:
sum=0;
voidmain()
{
Samplea
(2),b(3),c(5);
a.add();
a.disp();
b.add();
b.disp();
c.add();
c.disp();
}
54.给出下面程序的输出结果
#include
classA{
private:
friendclassB;
A(intval=0):
data(val),use
(1){}
intuse,data;
};
classB{
public:
A*pa;
B(intval=0):
pa(newA(val)){}
~B(){if(--pa->use==0)deletepa;}
B(B&rhs){++rhs->use;pa=rhs.pa;}
B&operator=(B&rhs);
A*operator->(){returnpa;}
voidDisplay(){
cout<<"data="<data
<<",use="<use<}
};
B&B:
:
operator=(B&rhs)
{
if(this==&rhs)return*this;
if(--pa->use==0)deletepa;
++rhs->use;
pa=rhs.pa;
return*this;
}
intmain(){
Bb1
(1),b2(b1),b3(3);
b1.Display();
b2.Display();
b3.Display();
b3=b1;
b1.Display();
b3.Display();
return0;
六、程序设计题(本大题共1小题,每小题10分,共10分)
55.已知一个student类,包括学姓名,成绩和等级,不含任何成员函数.process为学生信息处理类.
classstudent{
charname[10];
intdeg;
charlevel[7];
friendclassprocess:
public:
student(charna[],intd){strcpy(name,na);deg=d;}
};
classprocess{
public:
voidtrans(students[]){…}//根据学生成绩计算学生等级(优大于89分,良大于79分,中大于69分,及格大于59分,不及格小于60分).
voiddisp(students[]){...}//根据成绩降序打印所有学生信息
};
要求实现process类中的两个函数:
voidtrans(students[])
{
for(inti=0;i!
=size;i++){
if(s[i].deg>89)
strcpy(s[i].leve,"优");
elseif(s[i].deg>79)
strcpy(s[i].leve,"良");
elseif(s[i].deg>69)
strcpy(s[i].leve,"中");
elseif(s[i].deg>=59)
strcpy(s[i].leve,"及格");
else
strcpy(s[i].leve,"不及格");
}
}
voiddisp(students[])
{
studentswap("",0);
for(inti=0;i!
=size-1;i++){
for(intj=i+1;j!
=size;j++){
if(s[i].deg
swap=s[i];
s[i]=s[j];
s[j]=swap;
}
}
cout<<"姓名:
"<
"<
}
}