友元与继承Word格式.docx
《友元与继承Word格式.docx》由会员分享,可在线阅读,更多相关《友元与继承Word格式.docx(16页珍藏版)》请在冰豆网上搜索。
![友元与继承Word格式.docx](https://file1.bdocx.com/fileroot1/2022-11/28/9c5809d0-926d-498c-a447-c5fefe7371b4/9c5809d0-926d-498c-a447-c5fefe7371b41.gif)
SampleOutput
124678
#include<
iostream>
usingnamespacestd;
public:
ARR(intx[],intsize);
voiddelsame();
voidshow();
private:
intm;
inta[100];
ARR:
:
ARR(intx[],intsize)
m=size;
for(inti=0;
i<
m;
++i)
{
a[i]=x[i];
}
}
voidARR:
delsame()
m-1;
if(a[i]==a[i+1])
{
for(intj=i+1;
j<
j++)
a[j]=a[j+1];
m--;
i--;
show()
for(inti=0;
i++)
cout<
<
a[i]<
'
'
;
endl;
intmain()
intx[100];
intsize;
while(cin>
>
size)
size;
cin>
x[i];
ARRv(x,size);
v.delsame();
v.show();
return0;
ProblemDescription
定义一个日期类,它的数据成员有年、月、日;
它的函数成员有设置值、打印输出和判断是否闰年。
在类外部有一个普通函数,它的功能是判断一个日期类对象是否闰年,并在屏幕上显示:
“leapyear”或者“notleapyear”。
输入数据有多行,每行代表一个日期。
输出有多行,每行代表一个日期的判断结果。
200012
200138
201211
2000/1/2leapyear
2001/3/8notleapyear
2012/1/1leapyear
iostream.h>
classComplex{
intyears,month,day;
voidinit(inta,intb,intc)
years=a;
month=b;
day=c;
intpd()
if(years%4==0&
&
years%100!
=0||years%400==0)
return0;
else
return1;
voidprint()
cout<
years<
"
/"
month<
day;
main()
ComplexA;
inta,b,c;
a>
b>
c)
A.init(a,b,c);
if(A.pd()==0)
{
A.print();
cout<
leapyear"
}
notleapyear"
设计一个点类,能描述平面坐标上点;
利用友元函数计算并输出两点间的距离。
输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数据之间用空格隔开。
对于每组输入数据,输出一行,结果保留两位小数。
0001
0110
1.00
1.41
iomanip>
cmath>
classDate
doublex1;
doubley1;
doublex2;
doubley2;
Date(doublea1,doubleb1,doublea2,doubleb2)
x1=a1;
y1=b1;
x2=a2;
y2=b2;
friendvoiddisp(Date&
);
voiddisp(Date&
m)
doublee;
e=sqrt((m.x2-m.x1)*(m.x2-m.x1)+(m.y2-m.y1)*(m.y2-m.y1));
setiosflags(ios:
fixed)<
setprecision
(2)<
e<
doublea1,b1,a2,b2;
a1>
b1>
a2>
b2)
DateA(a1,b1,a2,b2);
disp(A);
}
继承类
classss
voidinit(doublea,doubleb)
x=a;
y=b;
x*y<
protected:
doublex,y;
classaa:
publicss
aa(doublea):
z(a)
{}
voidshow()
x*y*2+x*z*2+y*z*2<
x*y*z<
doublez;
doublea,b,c,d,e;
b)
cin>
c>
d>
e;
ssA;
A.init(a,b);
A.print();
aaB(e);
B.init(c,d);
B.show();
定义一个学生类Student,它包括学生名、住址和出生年份等私有数据以及输出函数show(),从它派生出一个大学生Academician类及一个小学生类Primary_scholar。
在大学生类中增加数据成员大学校名university_nane,在小学生类中所增加的数据成员是两门课的成绩,两个派生类所有有关的输出都由函数show()来实现。
输入数据有多行,第一行有两个整数n和m,分别代表大学生对象的个数n和小学生对象的个数m,接下来的n行为大学生的数据信息,m行为小学生的数据信息
输出每个学生的信息,一个学生一行
23
zhangFuzhou1988ZhangzhouNormalUniversity
liXiamen1987FuzhouUniversity
wangZhangzhou19987589
suQuanzhou19979090
wuPutian19967887
Name:
zhang,Address:
Fuzhou,Year:
1988,University_Name:
ZhangzhouNormalUniversity
li,Address:
Xiamen,Year:
1987,University_Name:
FuzhouUniversity
wang,Address:
Zhangzhou,Year:
1998,Score:
7589
su,Address:
Quanzhou,Year:
1997,Score:
9090
wu,Address:
Putian,Year:
1996,Score:
7887
classStudent
voidinit(inta,char*p,char*y)
strcpy(name,p);
strcpy(b,y);
name<
Address:
b<
Year:
x;
intx;
charname[100],b[100];
classAcademician:
publicStudent
Academician(char*a)
strcpy(c,a);
University_Name:
c<
charc[100];
classPrimary_scholar:
Primary_scholar(inta,intb):
m(a),n(b)
Score:
m<
n<
intm,n;
intm,n,y,a,b;
charname[100],c[100],z[100];
m>
n;
while(m--)
name>
y>
z;
AcademicianA(z);
A.init(y,name,c);
A.show();
while(n--)
b;
Primary_scholarB(a,b);
B.init(y,name,c);
B.print();
长方形的面积和长方体的体积
集合的并
classIntset
Intset(){EndPosition=-1;
Intset(inta[],intsize)
EndPosition=size;
element[i]=a[i];
voidinputdata(inta[],intsize)
voidCopy(Intset&
set)
intk=EndPosition,t;
set.EndPosition;
t=0;
for(intj=0;
EndPosition;
if(element[j]==set.element[i])
t=1;
break;
if(t==0)
element[k]=set.element[i];
k++;
EndPosition=k;
voidPrint()
sort();
element[i]<
intelement[100];
intEndPosition;
voidsort()
intt;
for(inti=0;
EndPosition-1;
for(intj=i+1;
if(element[i]>
element[j])
{
t=element[i];
element[i]=element[j];
element[j]=t;
}
intm,n,a[100],b[100],i;
for(i=0;
cin>
a[i];
b[i];
IntsetA(a,m);
IntsetB(b,n);
B.Copy(A);
B.Print();