完整版四川大学电子信息学院卓越工程师班高级语言程序设计II考试试题B文档格式.docx
《完整版四川大学电子信息学院卓越工程师班高级语言程序设计II考试试题B文档格式.docx》由会员分享,可在线阅读,更多相关《完整版四川大学电子信息学院卓越工程师班高级语言程序设计II考试试题B文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
7.在下列函数原型中,可以作为类AA构造函数的是()。
A)voidAA(int);
B)intAA();
C)~AA(int);
D)AA(int);
8.使用ifstream流类定义流对象并打开磁盘文件时,文件的默认打开方式为()。
A)ios:
:
inB)ios:
out
C)ios:
in|ios:
outD)没有默认的打开方式
9.在下面4个关键字中,用于说明虚基类的是()。
A)virtualB)public
C)protectedD)private
10.在面向对象方法中,实现信息隐蔽是依靠()。
A)对象的继承B)对象的多态
C)对象的封装D)对象的分类
二、填空题(本大题共5小题,每小题2分,共10分)不写解答过程,将正确的答案写在每小题的空格内。
错填或不填均无分。
1.含有纯虚函数的类称为()。
抽象类
2.若将一个二元运算符重载为类的成员函数,其形参个数应该是()个。
1
3.一个全局函数应声明为类的()函数才能访问这个类的private成员。
友元
4.重载运算符“>
>
”的函数名为()。
operator>
5.定义模板的关键字为()。
template
三、程序分析题(本大题共6小题,每小题5分,共30分)给出下面各程序的输出结果。
1.阅读下面程序,写出输出结果。
#include<
iostream>
//编译预处理命令
usingnamespacestd;
//使用命名空间std
classCTest
{
private:
intn;
//数据成员
public:
CTest(inti=16):
n(i){}//构造函数
intGet(){returnn;
}//返回n
intGet()const{returnn-2;
}//返回n-2
};
intmain()//主函数main()
CTesta;
//定义对象a
constCTestb(8);
//定义对象b
cout<
<
a.Get()<
"
"
<
b.Get()<
endl;
//输出信息
return0;
//返回值0,返回操作系统
}
上面程序的输出结果为:
16,6
2.阅读下面程序,写出输出结果。
classA
A(){cout<
A"
}//构造函数
~A(){cout<
~A"
}//析构函数
classB
Aa;
//数据成员
B(){cout<
B"
~B(){cout<
~B"
intmain(void)//主函数main()
Bobj;
//定义对象
~B
~A
3.阅读下面程序,写出输出结果。
classT>
TMax(constT&
a,constT&
b){returna<
b?
b:
a;
Max(1.8,5.18)<
endl<
Max<
int>
(1.8,5.18)<
//输出信息
5.18
5
4.阅读下面程序,写出输出结果。
//预处理命令
//使用标准命名空间std
namespacens//命名空间ns
{
intx=10;
//命名空间ns中的变量x
inty=100;
//命名空间ns中的变量y
namespace//无名命名空间
intx=20;
//命名空间中的变量x
inty=300;
//全局变量y
intmain(void)//主函数main(void)
x<
ns:
x<
//显示变量x的值
y<
y<
//显示变量y的值
2010
100300
5.阅读下面程序,写出输出结果。
//基类
classBase
//公有函数:
virtualvoidShow()const{cout<
Base:
Show()"
}//虚函数
//派生类
classDerived:
publicBase
voidShow()const{cout<
Derived:
}//虚函数
voidRefers(constBase&
obj)//基类引用
obj.Show();
//调用函数Show()
Baseobj1;
//定义对象
Derivedobj2;
Refers(obj1);
//调用函数Refers()
Refers(obj2);
Show()
6.阅读下面程序,写出输出结果。
protected:
//数据成员:
inta;
A(intx):
a(x){}//构造函数
a<
}//显示a之值
classB
intb;
B(intx):
b(x){}//构造函数
b<
}//显示a与b之值
classC:
publicA,publicB
C(intx,inty):
A(x),B(y){}//构造函数
voidShow()const//显示b之值
{cout<
}
Cobj(5,18);
//显示相关信息
obj.A:
Show();
//显示相关信息
obj.B:
5,18
18
四、程序填空题(本大题共4小题,每小题3分,共12分)
1.将如下程序补充完整。
//测试静态成员类
classTest
staticintcount;
//对象数
Test(){count++;
}//构造函数,实现对对象进行计数
staticvoidShow(){cout<
共有"
count<
个对象!
"
}//显示对象数
0;
//为静态数据成员赋初值
Testobj1,obj2,obj3;
//定义对象
Test:
//显示对象数
//返回值0,返回操作系统
intTest:
count=
2.下列程序的输出结果为“B”,试将程序补充完整。
voidShow()const{cout<
}//输出信息
classB:
publicA
voidShow()const{cout<
}//输出信息
A*p=newB;
//定义指针
p->
//输出信息
deletep;
//释放空间
virtual
3.将如下程序补充完整。
intm;
Base(inta):
m(a){}//构造函数
virtualvoidShow()const{cout<
m<
Derived(inta,intb):
Base(a),n(a){}//构造函数
voidShow()const//虚函数
{
cout<
n<
;
//显示n及"
Show();
//调用基类的Show()
Derivedobj(158,98);
//定义派生类对象
Base*p=&
obj;
//定义基类指针
//调用Show()
4.将如下程序补充完整。
//整型类
classInt
inti;
Int(intx=0):
i(x){}//构造函数,将基本类型int转换为整型类Int
(){returni;
}//类类型转换函数,将类Int转换为基本类型int
Inta;
//定义整型对象
//显示a
operatorint
五、编程题(本大题共2小题,第1小题12分,第2小题16分,共28分)
1.试使用函数模板实现求一个数组各元素的最小值,要求编写测试程序。
函数模板声明如下:
TypeMin(Typea[],intn)//求数组a各元素的最小值
参考程序:
Typem=a[0];
//用m表示当前所求的最小值
for(inti=1;
i<
n;
i++)
if(a[i]<
m)m=a[i];
//比较求出当前的最小值
returnm;
//返回最小值
inta[]={1,2,3,4,5,6,7,8,9};
//定义数组
Min(a,9)<
//输出各元素的最小值
//返回值,返回操作系统
2.定义复数类Complex,并重载加法运算符“+”、重载输出运算符“<
”和重载输入运算符“>
”,要求编写测试程序。
//声明复数数
classComplex
//数据成员
doublereal;
//实部
doubleimage;
//虚部
//公有函数
Complex(doubler=0,doublei=0):
real(r),image(i){}//构造函数
doubleGetReal()const{returnreal;
}//返回实部
doubleGetImage()const{returnimage;
}//返回虚部
voidSetReal(doubler){real=r;
}//设置实部
voidSetImage(doublei){image=i;
}//设置虚部
Complexoperator+(constComplex&
a,constComplex&
b)//重载加法运算符"
+"
returnComplex(a.GetReal()+b.GetReal(),a.GetImage()+b.GetImage());
//返回和
istream&
(istream&
in,Complex&
z)//重载输入运算符"
doubler,i;
//表示实部(r)和虚部(i)
输入实部:
in>
r;
//输入实部
输入虚部:
i;
//输入虚部
z.SetReal(r);
//设置实部
z.SetImage(i);
//设置虚部
returnin;
//返回输入流对象
ostream&
operator<
(ostream&
out,constComplex&
z)//重载输出运算符"
if(z.GetImage()<
0)cout<
z.GetReal()<
z.GetImage()<
i"
//虚部为负
elseif(z.GetImage()==0)cout<
z.GetReal();
//虚部为0
elsecout<
//虚部为正
returnout;
//返回输出流对象
Complexa,b,c;
//定义复数对象
输入复数a:
//输入提示
cin>
//输入a
输入复数b:
b;
//输入b
c=a+b;
//求和
("
)+("
)="
c<
//输出相关信息
//返回值0,返回操作系统