四川大学C++面向对象程序设计模拟精彩试题1Word文档下载推荐.docx
《四川大学C++面向对象程序设计模拟精彩试题1Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《四川大学C++面向对象程序设计模拟精彩试题1Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。
C〕必须使用privateD〕必须使用public
10.类类型转换函数〔A〕。
A〕不能带有参数B〕只能带一个参数
C〕只能带2个参数D〕只能带3个参数
二、填空题〔本大题共5小题,每一小题2分,共10分〕不写解答过程,将正确的答案写在每一小题的空格。
错填或不填均无分。
1.在用C++进展程序设计时,最好用〔new〕代替malloc。
2.函数模板中紧随template之后尖括号的类型参数都要寇以保存字〔class或typename〕。
3.编译时多态性可以用〔重载〕函数实现。
4.拷贝构造函数用它所在类的〔对象〕作为参数。
5.用关键字static修饰的类的成员称为(静态)成员。
三、程序分析题〔本大题共6小题,每一小题5分,共30分〕给出下面各程序的输出结果。
1.阅读下面程序,写出输出结果。
#include<
iostream>
usingnamespacestd;
classArray
{
public:
Array(inta[],intiSize):
elem(a),size(iSize)
{
}
intGetSize()
returnsize;
int&
operator[](inti)
returnelem[i-1];
private:
int*elem;
intsize;
};
intmain()
ints[]={3,7,2,1,5};
Arrayar(s,5);
ar[1]=9;
for(inti=1;
i<
=5;
i++)
cout<
<
ar[i]<
"
;
cout<
endl;
return0;
}
上面程序的输出结果为:
97215
2.阅读下面程序,写出输出结果。
template<
classType>
voidPrint(Typea[],intn)
for(inti=0;
n;
a[i]<
inta[]={5,6,8};
doubleb[]={6.8,9.6};
Print(a,sizeof(a)/sizeof(int));
Print(b,2);
3.阅读下面程序,写出输出结果。
classTest
Test(intn):
num(n)
count++;
~Test()
voidPrint()const;
staticintGetCount()
returncount;
intnum;
staticintcount;
intTest:
count=0;
voidTest:
Print()const
this->
num<
<
count<
TestoTest1(6);
oTest1.Print();
TestoTest2(8);
oTest2.Print();
Test:
GetCount();
61822
4.阅读下面程序,写出输出结果。
Test(inta=0,intb=0,intc=0):
x(a),y(b),z(c){}
voidPrint()
x<
y<
voidPrint()const
z<
intx,y;
constintz;
Testobj1;
obj1.Print();
Testobj2(1,6,8);
obj2.Print();
constTestobj3(6,0,18);
obj3.Print();
001618
5.阅读下面程序,写出输出结果。
classMyClass
staticintn;
MyClass(){n+=1;
}
~MyClass(){n-=1;
staticintGetNum(){returnn;
intMyClass:
n=0;
intmain()
MyClass:
GetNum()<
MyClassobj;
MyClass*p=newMyClass;
deletep;
end"
0121end
6.阅读下面程序,写出输出结果。
classA
inta;
A(){cout<
无参构造函数"
A(inta){cout<
含参构造函数a="
a<
}
A(constA&
copy):
a(copy.a){cout<
复制构造函数"
~A(){cout<
析构函数"
Aobj1,obj2
(1),obj3(obj2);
无参构造函数含参构造函数a=1复制构造函数析构函数析构函数析构函数
四、完成程序填题〔本大题共4个小题,每一小题3分,共12分〕下面程序都留有空白,请将程序补充完整。
1.将如下程序补充完整。
Test(intnum=0){[1]this->
num或Integer:
num=num;
}//初始化数据成员num为形参num
intGetNum()const{returnnum;
intmain()
Testobj;
obj.GetNum()<
2.将如下程序补充完整。
A(intm):
a(m){}
voidShow()const{cout<
classB:
A
intb;
B(intm,intn=0):
[2]A(m),b(n){}//初始化数据成员b的值为n
voidShow()const
{
A:
Show();
b<
Bobj(8);
obj.Show();
3.如下程序的输出结果为:
1
试将程序补充完整。
classPoint
Point(intm=0,intn=0):
x(m),y(n){count++;
~Point(){count--;
}
intGetX()const{returnx;
}
intGetY()const{returny;
staticvoidShowCount(){cout<
count<
[3]intPoint:
//静态数据成员的初始化为0
intmain()
Point:
ShowCount();
Point*p=newPoint;
4.将如下程序补充完整。
classplex
doublerealPart;
doubleimagePart;
plex(doublereal=0,doubleimage=0):
realPart(real),imagePart(image){}
doubleGetRealPart()const{returnrealPart;
doubleGetImagePart()const{returnimagePart;
[4]plexoperator+(constplex&
a)const//重载加法运算符+
plexb;
b.realPart=this->
realPart+a.realPart;
b.imagePart=this->
imagePart+a.imagePart;
returnb;
intmain()
plexa(1,2),b(2,6),c;
c=a+b;
a="
a.GetRealPart()<
+"
a.GetImagePart()<
i"
b="
b.GetRealPart()<
b.GetImagePart()<
c="
c.GetRealPart()<
c.GetImagePart()<
五、编程题〔本大题共2小题,第1小题12分,第2小题16分,共28分〕
1.编写一个函数模板,用于求参数的绝对值,并编写测试程序进展测试。
函数模板声明如下:
TypeAbs(Typea);
1.参考程序:
TypeAbs(Typea)
if(a>
=0)returna;
elsereturn-a;
Abs(5)<
Abs(-5)<
Abs(2.5)<
Abs(-2.5)<
2.定义一个复数类plex,定义带有2个参数〔其中一个为缺省参数〕的构造函数,显示复数值的函数Show(),重载“+〞运算符〔用成员函数实现〕,并编写测试程序进展测试。
参考程序:
plex(doubler,doublei=0)
real=r;
image=i;
voidShow()
real;
if(image>
0)cout<
image<
elseif(image<
-"
-image<
elsecout<
plexoperator+(constplex&
obj)
plextemp(real+obj.real,image+obj.image);
returntemp;
doublereal,image;
plexz1(2,6),z2(3,8),z3(0);
z1.Show();
z2.Show();
z3.Show();
z3=z1+z2;
z3.Show();