07年c++自考试题.docx

上传人:b****8 文档编号:9276251 上传时间:2023-02-04 格式:DOCX 页数:14 大小:18.87KB
下载 相关 举报
07年c++自考试题.docx_第1页
第1页 / 共14页
07年c++自考试题.docx_第2页
第2页 / 共14页
07年c++自考试题.docx_第3页
第3页 / 共14页
07年c++自考试题.docx_第4页
第4页 / 共14页
07年c++自考试题.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

07年c++自考试题.docx

《07年c++自考试题.docx》由会员分享,可在线阅读,更多相关《07年c++自考试题.docx(14页珍藏版)》请在冰豆网上搜索。

07年c++自考试题.docx

07年c++自考试题

 

全国2007年1月高等教育自学考试

面向对象程序设计试题

课程代码:

02328

一、单项选择题(本大题共10小题,每小题2分,共20分)

在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。

错选、多选或未选均无分。

1.一个函数功能不太复杂,但要求被频繁调用,选用(A)

A.内联函数B.重载函数

C.递归函数D.嵌套函数

2.C++的继承性允许派生类继承基类的(C)

A.部分特性,并允许增加新的特性或重定义基类的特性

B.部分特性,但不允许增加新的特性或重定义基类的特性

C.所有特性,并允许增加新的特性或重定义基类的特性

D.所有特性,但不允许增加新的特性或重定义基类的特性

3.在C++中,封装是借助什么达到的?

(B)

A.结构B.类

C.数组D.函数

4.建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为(C)

A.自己所属类、对象成员所属类、基类的构造函数

B.对象成员所属类、基类、自己所属类的构造函数

C.基类、对象成员所属类、自己所属类的构造函数

D.基类、自己所属类、对象成员所属类的构造函数

5.类的析构函数是对一个对象进行以下哪种操作时自动调用的?

(B)

A.建立B.撤消

C.赋值D.引用

6.下列不是描述类的成员函数的是(C)

A.构造函数B.析构函数

C.友元函数D.拷贝构造函数

7.所有在函数中定义的变量,连同形式参数,都属于(B)

A.全局变量B.局部变量

C.静态变量D.寄存器变量

8.假定AB为一个类,则执行ABx;语句时将自动调用该类的(B)

A.有参构造函数B.无参构造函数

C.拷贝构造函数D.赋值构造函数

9.假定AA为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为(B)

A.x.aB.x.a()

C.x->aD.x->a()

10.对于任一个类,用户所能定义的构造函数的个数至多为(D)

A.0B.1

C.2D.任意个

二、填空题(本大题共10小题,每小题2分,共20分)

请在每小题的空格中填上正确答案。

错填、不填均无分。

11.对象的四大基本特性是多态性、继承性、__抽象____和封装性。

12.为了使类中的成员不能被类外的函数通过成员操作符访问,则应把该成员的访问权限定义为___private___。

13.C++程序的源文件扩展名为___.cpp___。

14.所有模版都是以___template___关键字和一个形参表开头的。

15.在#include命令中所包含的头文件,可以是系统定义的头文件,也可以是___用户___定义的头文件。

16.一个const对象只能访问___常值___成员函数。

17.C++是通过引用运算符___&___来定义一个引用的。

18.若y是x的引用,则对y的操作就是对___x___的操作。

19.执行____delete__操作将释放由p所指向的动态分配的数据空间。

20.C++的流库预定义了4个流,它们是cin、cout、___cerr___和clog。

请见自考教材194页

cin与标准输入设备相联接

cout与标准输出设备相联接

cerr与标准错误输出设备相联接(非缓冲方式)

clog与标准错误输出设备相联接(缓冲方式)

三、改错题(本大题共2小题,每小题6分,共12分)

21.假定下面程序将分数a和b相加,其和赋值给c并输出,要求输出结果为“13/18”,其主函数5到8行之间存在着三行语句错误,请指出错误行的行号并改正。

#include

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<

};

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<

}//9行

错误行的行号为______、______和______。

分别改正为______、______和______。

第5行有错改为:

b.InitFranction(6,18)

第7行有错改为:

c=a.FranAdd(b)

 第8行有错改为:

c.Franoutput()

22.下面是一个类的定义,在5到12行之间有3行存在语法错误,请指出错误行的行号并改正。

classCE{//1行

private:

//2行

inta,b;//3行

intgetmin(){return(a

a:

b);}//4行

public//5行

intc;//6行

voidSetValue(intx1,intx2,intx3){//7行

a=x1;b=x2;c=x3;//8行

};//9行

intGetMin();//10行

};//11行

intGetMin(){//12行

intd=getmin();//13行

return(d

d:

c);//14行

}//15行

错误行的行号为______、______和______。

分别改正为______、______和______。

第5行有错,改为:

public:

第9行有错,把“;”号去掉

第12行有错 ,改为:

intCE:

:

GetMin()

四、程序填空题(本大题共3小题,每小题6分,共18分)

请按提示要求完成以下程序段的填空。

23.classA{

inta,b;

public:

___A(intaa=0,intbb=0) {a=aa;b=bb;}____//定义构造函数,使参数aa和bb的默认值为0,

//在函数体中用aa初始化a,用bb初始化b

};

main(){

A*p1,*p2;

___p1=newA;___;//调用无参构造函数生成由p1指向的动态对象

___p2=newA(4,5);___;//调用带参构造函数生成由p2指向的动态对象,

//使a和b成员分别被初始化为4和5

}

(1)

(2)(3)

24.一种类定义如下:

#include

#include

classBooks

{

private:

charbk_name[20];//书的名称

intprice;//书的价格

staticinttotalprice;//同类书总价格

public:

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)returnbk_name;(5)static(6)returntotalprice

25.已知一个类的定义如下:

#include

classAA{

inta[10];

intn;

public:

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

if(a[j]

x=a[j];

k=____(8)____;

}

a[k]=a[i];

a[i]=____(9)____;

}

}

(7)i

五、程序分析题(本大题共6小题,每小题5分,共30分)

阅读以下程序,写出其运行结果。

26.#include

constintN=6;

voidfun();

voidmain()

{

for(inti=1;i

fun();

}

voidfun()

{

staticinta=2;

cout<<(a+=3)<<′′;

}

5 8 11 14 17

27.#include

#include

classfun{

friendostream&operator<<(ostream&,fun);

}ff;

ostream&operator<<(ostream&os,funf){

os.setf(ios:

:

left);//设置输出对象为左对齐方式

returnos;

}//输出流运算符重载

voidmain()

{

cout<

cout<

}

*****12345

54321*****

28.#include

classa

{

public:

virtualvoidfunc(){cout<<"funcinclassa"<

};

classb

{

public:

virtualvoidfunc(){cout<<"funcinclassb"<

};

classc:

publica,publicb

{

public:

voidfunc(){cout<<"funcinclassc"<

};

voidmain()

{

cc;

a&pa=c;

b&pb=c;

pa.func();

pb.func();

}

funcinclassb

funcinclassb

29.#include

classtesta{

public:

testa(){a1=0;}

testa(inti){a1=i;}

voidprintout(){cout<

private:

inta1;

};

classtestb:

publictesta{

public:

testb(){b1=0;};

testb(inti,intj,intk);

voidprintout();

private:

intb1;

testaaa;

};

testb:

:

testb(inti,intj,intk):

testa(i),aa(j){b1=k;}

voidtestb:

:

printout(){

testa:

:

printout();

cout<

}

voidmain(){

testbtt[2];

tt[0]=testb(9,3,5);

tt[1]=testb(8,4,7);

for(inti=0;i<2;i++)

tt[i].printout();

}

9

8

30.#include

voidmain()

{

for(inti=-1;i<4;i++)

cout<<(i?

′0′:

′*′);

}

0*000

31.#include

classDate

{

intYear,Month,Day;

public:

voidSetDate(inty,intm,intd){Year=y;Month=m;Day=d;}

voidPrintDate(){cout<

Date(){SetDate(2000,1,1);}

Date(inty,intm,intd){SetDate(y,m,d);}

};

classTime

{

intHoure,Minutes,Seconds;

public:

voidSetTime(inth,intm,ints){Houre=h;Minutes=m;Seconds=s;}

voidPrintTime(){cout<

"<

"<

Time(){SetTime(0,0,0);}

Time(inth,intm,ints){SetTime(h,m,s);}

};

classDate_Time:

publicDate,publicTime

{

public:

Date_Time():

Date(),Time(){};

Date_Time(inty,intmo,intd,inth,intmi,ints):

Date(y,mo,d),Time(h,mi,s){}

voidPrintDate_Time(){PrintDate();PrintTime();}

};

voidmain()

2000/1/1

0:

0:

0

2002/10/1

23:

59:

59

2002/12/31

0:

0:

0

{

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);

dt_a.PrintDate_Time();

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 管理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1