02328自考全国面向对象程序设计试题Word下载.docx
《02328自考全国面向对象程序设计试题Word下载.docx》由会员分享,可在线阅读,更多相关《02328自考全国面向对象程序设计试题Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
A.全局变量B.局部变量
C.静态变量D.寄存器变量
8.假定AB为一个类,则执行ABx;
语句时将自动调用该类的()
A.有参构造函数B.无参构造函数
C.拷贝构造函数D.赋值构造函数
9.假定AA为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为()
A.x.aB.x.a()
C.x->
aD.x->
a()
10.对于任一个类,用户所能定义的构造函数的个数至多为()
A.0B.1
C.2D.任意个
二、填空题(本大题共10小题,每小题2分,共20分)
请在每小题的空格中填上正确答案。
错填、不填均无分。
11.对象的四大基本特性是多态性、继承性、______和封装性。
12.为了使类中的成员不能被类外的函数通过成员操作符访问,则应把该成员的访问权限定义为______。
13.C++程序的源文件扩展名为______。
14.所有模版都是以______关键字和一个形参表开头的。
15.在#include命令中所包含的头文件,可以是系统定义的头文件,也可以是______定义的头文件。
16.一个const对象只能访问______成员函数。
17.C++是通过引用运算符______来定义一个引用的。
18.若y是x的引用,则对y的操作就是对______的操作。
19.执行______操作将释放由p所指向的动态分配的数据空间。
20.C++的流库预定义了4个流,它们是cin、cout、______和clog。
三、改错题(本大题共2小题,每小题6分,共12分)
21.假定下面程序将分数a和b相加,其和赋值给c并输出,要求输出结果为“13/18”,其主函数5到8行之间存在着三行语句错误,请指出错误行的行号并改正。
#include<
iostream.h>
classFranction{//定义分数类
intnume;
//定义分子
intdeno;
//定义分母
public:
//把*this化简为最简分数,具体定义在另外文件中实现
voidFranSimp();
//返回两个分数*this和x之和,具体定义在另外文件中实现
FranctionFranAdd(constFranction&
x);
//置分数的分子和分母分别0和1
voidInitFranction(){nume=0;
deno=1;
}
//置分数的分子和分母分别n和d
voidInitFranction(intn,intd){nume=n;
deno=d;
//输出一个分数
voidFranOutput(){cout<
<
nume<
′/′<
deno<
endl;
};
voidmain()//1行
{//2行
Franctiona,b,c;
//3行
a.InitFranction(7,18);
//4行
b.InitFranction
(1);
//5行
c.InitFranction();
//6行
c=FranAdd(a,b);
//7行
cout<
c.nume<
c.deno<
//8行
}//9行
错误行的行号为______、______和______。
分别改正为______、______和______。
22.下面是一个类的定义,在5到12行之间有3行存在语法错误,请指出错误行的行号并改正。
classCE{//1行
private:
//2行
inta,b;
intgetmin(){return(a<
b?
a:
b);
}//4行
public//5行
intc;
voidSetValue(intx1,intx2,intx3){//7行
a=x1;
b=x2;
c=x3;
//9行
intGetMin();
//10行
//11行
intGetMin(){//12行
intd=getmin();
//13行
return(d<
c?
d:
c);
//14行
}//15行
四、程序填空题(本大题共3小题,每小题6分,共18分)
请按提示要求完成以下程序段的填空。
23.classA{
____
(1)____//定义构造函数,使参数aa和bb的默认值为0,
//在函数体中用aa初始化a,用bb初始化b
main(){
A*p1,*p2;
____
(2)____;
//调用无参构造函数生成由p1指向的动态对象
____(3)____;
//调用带参构造函数生成由p2指向的动态对象,
//使a和b成员分别被初始化为4和5
(1)
(2)(3)
24.一种类定义如下:
string.h>
classBooks
{
charbk_name[20];
//书的名称
intprice;
//书的价格
staticinttotalprice;
//同类书总价格
Books(char*str,intp){//构造函数
strcpy(bk_name,str);
//strcpy函数将str字符串的内容拷贝到bk_name
price=p;
totalprice+=price;
~Books(){totalprice-=price;
char*GetN(){____(4)____;
}//返回书名称
intGetP(){returnprice;
____(5)____GetTotal_Price(){//定义静态成员函数
____(6)____;
//返回总价格
(4)(5)(6)
25.已知一个类的定义如下:
classAA{
inta[10];
intn;
voidSetA(intaa[],intnn);
//用数组aa初始化数据成员a,
//用nn初始化数据成员n
intMaxA();
//从数组a中前n个元素中查找最大值
voidSortA();
//采用选择排序的方法对数组a中前n个元素
//进行从小到大排序
voidInsertA();
//采用插入排序的方法对数组a中前n个元素进行从小到大排序
voidPrintA();
//依次输出数组a中的前n个元素
voidAA:
:
SortA()
inti,j;
for(i=0;
____(7)____;
i++){
intx=a[i],k=i;
for(j=i+1;
j<
n;
j++)
if(a[j]<
x){
x=a[j];
k=____(8)____;
a[k]=a[i];
a[i]=____(9)____;
(7)(8)(9)
五、程序分析题(本大题共6小题,每小题5分,共30分)
阅读以下程序,写出其运行结果。
26.#include<
constintN=6;
voidfun();
voidmain()
for(inti=1;
i<
N;
i++)
fun();
voidfun()
staticinta=2;
(a+=3)<
′′;
27.#include<
iomanip.h>
classfun{
friendostream&
operator<
(ostream&
fun);
}ff;
ostream&
os,funf){
os.setf(ios:
left);
returnos;
setfill(′*′)<
setw(10)<
12345<
ff<
54321<
28.#include<
classa
virtualvoidfunc(){cout<
"
funcinclassa"
classb
funcinclassb"
classc:
publica,publicb
voidfunc(){cout<
funcinclassc"
cc;
a&
pa=c;
b&
pb=c;
pa.func();
pb.func();
29.#include<
classtesta{
testa(){a1=0;
testa(inti){a1=i;
voidprintout(){cout<
a1;
inta1;
classtestb:
publictesta{
testb(){b1=0;
testb(inti,intj,intk);
voidprintout();
intb1;
testaaa;
testb:
testb(inti,intj,intk):
testa(i),aa(j){b1=k;
voidtestb:
printout(){
testa:
printout();
voidmain(){
testbtt[2];
tt[0]=testb(9,3,5);
tt[1]=testb(8,4,7);
for(inti=0;
2;
tt[i].printout();
30.#include<
for(inti=-1;
4;
(i?
′0′:
′*′);
31.#include<
classDate
intYear,Month,Day;
voidSetDate(inty,intm,intd){Year=y;
Month=m;
Day=d;
voidPrintDate(){cout<
Year<
/"
Month<
Day<
Date(){SetDate(2000,1,1);
Date(inty,intm,intd){SetDate(y,m,d);
classTime
intHoure,Minutes,Seconds;
voidSetTime(inth,intm,ints){Houre=h;
Minutes=m;
Seconds=s;
voidPrintTime(){cout<
Houre<
Minutes<
Seconds<
Time(){SetTime(0,0,0);
Time(inth,intm,ints){SetTime(h,m,s);
classDate_Time:
publicDate,publicTime
Date_Time():
Date(),Time(){};
Date_Time(inty,intmo,intd,inth,intmi,ints):
Date(y,mo,d),Time(h,mi,s){}
voidPrintDate_Time(){PrintDate();
PrintTime();
Date_Timedt_a,dt_b(2002,10,1,6,0,0);
dt_a.PrintDate_Time();
dt_b.SetTime(23,59,59);
dt_b.PrintDate_Time();
dt_a.SetDate(2002,12,31);