C++自考历年真题小集_第1页
C++自考历年真题小集_第2页
C++自考历年真题小集_第3页
C++自考历年真题小集_第4页
C++自考历年真题小集_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C++自考历年真题小集.txt这是一个禁忌相继崩溃的时代,没人拦得着你,只有你自己拦着

自己,你的禁忌越多成就就越少。自卑有多种档次,最高档次的自卑表现为吹嘘自己干什么

都是天才。全国2008年10月自学考试

C++程序设计试题

课程代码:04737

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

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

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

1.对C++语言和C语言的兼容性,描述正确的是()

A.C++兼容C

B.C++部分兼容C

C.C++不兼容C

D.C兼容C++

2.在C++中使用流进行输入输出,其中用于屏幕输出的对象是()

A.cerr

B.cin

C.cout

D.cfile

3.对使用关键字new所开辟的动态存储空间,释放时必须使用()

A.free

B.create

C.delete

D.realse

4.如没有使用private关键字定义类的数据成员,则默认为()

A.private

B.public

C.protected

D.friend

5.使用值传递方式将实参传给形参,下列说法正确的是()

A.形参是实参的备份

B.实参是形参的备份

C.形参和实参是同一对象

D.形参和实参无联系

6.在函数调用时,如某一默认参数要指明一个特定值,则有()

A.其之前所有参数都必须赋值

B.其之后所有参数都必须赋值

C.其前、后所有参数都必须赋值

D.其前、后所有参数都不必赋值

7.设存在函数intmax(int,int)返回两参数中较大值,若求22,59,70三者中最大值,

下列表达式不正确的是()

A.intm=max(22,max(59,70));

B.intm=max(max(22,59),70);

C.intm=max(22,59,70);

D.intm=max(59,max(22,70));

8.下列哪个类型函数不适合声明为内联函数()

A.函数体语句较多

B.函数体语句较少

C.函数执行时间较短

D.函数执行时间过长

9.intFunc(int,int);不可与下列哪个函数构成重载()

A.intFunc(int,int,int);

B.doubleFunc(int,int);

C.doubleFunc(double,double);

D.doubleFunc(int,double);

10.对类中声明的变量,下列描述中正确的是()

A.属于全局变量

B.只属于该类

C.属于该类,某些情况下也可被该类不同实例所共享

D.任何情况下都可被该类所有实例共享

11.类的私有成员可在何处访问()

A.通过子类的对象访问

B.本类及子类的成员函数中

C.通过该类对象访问

D.本类的成员函数中

12.如果没有为一个类定义任何构造函数的情况下,下列描述正确的是()

A.编译器总是自动创建一个不带参数的构造函数

B.这个类没有构造函数

C.这个类不需要构造函数

D.该类不能通过编译

13.•个类可包含析构函数的个数是()

A.0个

B.1个

C.至少一个

D.0个或多个

14.this指针存在的目的是()

A.保证基类公有成员在子类中可以被访问

B.保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码

C.保证基类保护成员在子类中可以被访问

D.保证基类私有成员在子类中可以被访问

15.下列关于类的权限的描述错误的是()

A.类本身的成员函数只能访问自身的私有成员

B.类的对象只能访问该类的公有成员

C.普通函数不能直接访问类的公有成员,必须通过对象访问

D.一个类可以将另一个类的对象作为成员

16.在编译指令中,宏定义使用哪个指令()

A.ttinclude

B.ttdefine

C.#if

D.#else

17.设类A将其它类对象作为成员,则建立A类对象时,下列描述正确的是()

A.A类构造函数先执行

B.成员构造函数先执行

C.两者并行执行

D.不能确定

18.下列描述错误的是()

A.在创建对象前,静态成员不存在

B.静态成员是类的成员

C.静态成员不能是虚函数

D.静态成员函数不能直接访问非静态成员

19.对于友元描述正确的是()

A.友元是本类的成员函数

B.友元不是本类的成员函数

C.友元不是函数

D.友元不能访问本类私有成员

20.在哪种派生方式中,派生类可以访问基类中的protected成员()

A.public和private

B.public和protected

C.protected和private

D.仅protected

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

请在每小题的空格中填上正确答案。错填、不填均无分。

21.设要把一个文件输出流对象myFile与文件“f:\myText.txt相关联,所用的C++语句

是:。

22.C++中ostream类的直接基类是。

23.运算符[]只能用运算符来重载,不能用友元运算符来重载。

24.定义虚函数所用的关键字是。

25.vector类中用于返回向量中第1个对象的方法是。

26.在C++中,利用向量类模板定义•个具有20个char的向量E,其元素均被置为字符't',

实现此操作的语句是。

27.类的继承是指子类继承基类的和成员函数。

28.不同对象可以调用相同名称的函数,但可导致完全不同的行为的现象称为。

29.指令指示编译器将一个源文件嵌入到带该指令的源文件之中。

30.设类A有成员函数

voidFun(void);

若要定义一个指向类成员函数的指针变量pafn来指向Fun,该指针变量的声明语句是:

31.设在程序中使用如下语句申请了一个对象数组:

Point*ptr=newPoint[2];

则在需要释放ptr指向的动态数组对象时;所使用的语句是—

32.在保护派生中,基类权限为Private的成员在派生类中

33.类A有如下成员函数

intA::fun(doublex){return(int)x/2;)

intA::fun(intx){returnx*2;}

设a为类A的对象,在主函数中有ints=a.fun(6.0)+a.fun(2),则执行该语句后,s的值

为________o

34.对象传送的消息一般由3部分组成:接收对象名、调用操作名和o

35.将指向对象的指针作为函数参数,形参是对象指针,实参是对象的_______o

36.在使用string类的find成员函数来检索主串中是否含有指定的子串时,若在主事中不

含指定的子串,find函数的返回值是________。

37.在C++中,声明布尔类型变量所用的关键字是o

38.执行下列代码

inta=29,b=100;

cout〈程序的输出结果是:_.o

39.执行下列代码

cout<<〃Hex:〃«hex«255;

程序的输出结果为O

40.C++语言中可以实现输出一个换行符并刷新流功能的操控符是_______o

三、改错题(本大题共5小题,每小题2分,共10分)

下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见。

41.ttinclude

main(){

intx=5,y=6;

constint*p=&x;

*p=y;

cout<<*p<)

42.^include

classf{

private:intx,y;

public:fl(){x=0;y=0;}

print(){cout<}

main(){

fa;

a.fl(l,1);

a.print();

)

43.ttinclude

classf{

private:intx=0,y=0;

public:voidfl(inta,intb){x=a;y=b;}

voidget(){cout<};

main(){

fa;

a.fl(1,3);

a.get();

)

44.ttinclude

classpoint{private:floatx;

public:voidf(floata){x=a;}

voidf(){x=0;}

friendfloatmax(pointfea,point&b);

);

floatmax(point&a,point&b)

{return(a.x>b.x)?a.x:b.x;)

main(){

pointa,b;

a.f(2.2);b.f(3.3);

cout<}

45.^include

template

classf{

private:Tx,y;

public:voidfl(Ta,Tb){x=a;y=b;}

Tmax(){retum(x>y)?x:y;}

};

main(){

fa;

a.fl(1.5,3.8);'

cout<)

四、完成程序题(本大题共5小题,每小题4分,共20分)

46.完成下面类中的成员函数的定义。

classpoint

(

private:

intm,n;

public:

point(int,int);

point(point&);

};

point::point(inta,intb)

(

m=a;

_________=b;

)

point::point()

m二t.m;

n=t.n;

)

47.下面是一个输入半径,输出其面积和周长的C++程序,在下划线处填上正确的语句。

#include

usingnamespacestd;

pi=3.14159;

voidmain()

(

doubler;

cout<<"r=/,;

double1=2.0*pi*r;

doubles=pi*r*r;

cout<<"\nThelongis:"<cout«,zTheareais:"<}

48.在下划线处填上缺少的部分。

ttinclude

^include

usingnamespacestd;

classcomplex

(

public:

intreal;

intimag;

complex(intr=0,inti=0)

(

real二r;

imag=i;

)

};

complexoperator+(,complex&b)

(

intr=a.real+b.real;

inti=a.imag+b.imag;

return;

}

voidmain()

(

complexx(l,2),y(3,4),z;

z=x+y;

cout<}

49.程序的输出结果如下:

1,9

50,30

请根据输出数据在下面程序中的下划线处填写正确的语句。

源程序如下:

#include

usingnamespacestd;

classbase

(

private:

intm;

public:

base(){};

base(inta):m(a){}

intget(){returnm;}

voidset(inta){m=a;}

);

voidmain()

(

base*ptr=newbase[2];

ptr->set(30);

ptr=;

ptr->set(50);

basea[2]={l,9};

cout<cout<get()«,/,";

ptr=ptr-l;

cout<<<delete[]ptr;

)

50.在下面横线处填上求两个浮点数之差的cha函数的原型声明、调用方法。

#include

usingnamespacestd;

voidmain()

(

floata,b;

//函数cha的原型声明

a=12.5;

b=6.5;

floatc=;//调用函数cha

cout<}

floatcha(floatx,floaty)

(

floatw;

w=x-y;

returnw;

)

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

51.给出下面程序的输出结果。

#include

template

classSample

(

Tn;

public:

Sampledi){n=i;}

intoperator==(Sample&);

};

template

intSample::operator==(Sample&s)

(

if(n==s.n)

return1;

else

return0;

)

voidmain()

(

Samplesl(2),s2(3);.

cout«"si与s2的数据成员〃<«sl=二s2?〃相等":"不相等〃)<Samples3(2.5),

s4(2.5);

cout<<〃s3与s4的数据成员〃<<(s3=s4?"相等":〃不相等〃X}

52.给出下面程序的输出结果。

#include

usingnamespacestd;

template

Tmax(Tml,Tm2)

{return(ml>m2)?ml:m2:}

voidmain(){

cout<cout<}

53.给出下面程序的输出结果

#include

usingnamespacestd;

classA{

public:

intx;

A(){)

A(inta){x=a;}

intget(inta){returnx+a;}};

voidmain(){

Aa(8);

int(A::*p)(int);

p=A::get;

cout<<(a.*p)(5)<A*pi=&a;

cout«(pi->*P)(7)<54.给出下面程序的输出结果。

include

#include

usingnamespacestd;

classBook{

char*title;

char*author;

intnumsold;

public:

Book(){}

Book(constchar*strl,constchartstr2,constintnum){

intlen=strlen(strl);

title=newchar[len+1];

strcpy(title,strl);

len=strlen(str2);

author=newchar[len+1];

strcpy(author,str2);

numsold=num;}

voidsetbook(constchar*strl,constchartstr2,constintnum){

intlen=strlen(strl);

title=newchar[len+1];

strcpy(title,strl);

len=strlen(str2);

author=newchar[len+1];

strcpy(author,str2);

numsold二num;

}

〜Book(){

deletetitle;

deleteauthor;

)

voidprint(ostream&output){

output<<"书名:"<output<<"作者:"<output*"月销售

量:〃<).

};

voidmain(){

Bookobjl("数据结构〃,〃严蔚敏〃,200),obj2;

objl.print(cout);

obj2.setbook(〃C++语言程序设计",〃李春葆〃,210);

obj2.print(cout);

)

六、程序设计题(本大题共1小题,共10分)

55.在三角形类TRI实现两个函数,功能是输入三个顶点坐标判断是否构成三角形

ttinclude

#include

classpoint{

private:floatx,y;

public:point(floata,floatb){x=a;y=b;}

point(){x=0;y=0;},

voidset(floata,floatb){x=a;y=b;}

floatgetx(){returnx;}

floatgety(){returny;}

);

classtri(

pointx,y,z;

floatsi,s2,s3;

public;...settri(....);//用于输入三个顶点坐标

....test(....);//用于判断是否构成三角形

);请写出两个函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值

类型

全国2009年1月自学考试

C++程序设计试题

课程代码:04737

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

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

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

1.C++源程序文件扩展名为()

A..cpp

B..h

C..lib

D..obj

2.在C++中使用流进行输入输出,其中专用于从键盘进行输入的流是()

A.cerr

B.cin

C.cout

D.cfile

3.包含自定义头文件file,h的预处理指令是()

A.#define<file.h>

B.#includefile,h

C.^definefile,h

D.#include,zfile.h〃

4.用于标识十六进制前缀或后缀是()

A.元

B.后缀L或e

C.前缀零

D.前缀Ox

5.设存在整型变量intx,则下列句与其它三项含义不同的是()

A.int*p=&x;

B.int&p=x;

C.int&p=x;

D.int&p=x;

6.在定义类成员时,为产生封装性,则需使用哪个关键字()

A.public

B.publish

C.protected

D.private

7,设函数voidswap(int&,int&)将交换两形参的值,如两整型变量inta=10;intb=15;

则执行swap(a,b)后,a、b值分别为()

A.10,10

B.10,15

C.15,10

D.15,15

8.函数默认参数在函数原型中说明,默认参数必须放在参数序列的()

A.前部

B.中部

C.后部

D.两端

9.设存在函数intmin(int,int)返回两参数中较小值,若求15,26,47三者中最小值,下

列表达式中错误的是()

A.intm=min(min(15,26),min(15,47));

B.intm=min(15,26,47);

C.intm=min(15,min(47,26));

D.intm=min(min(47,26),16);

10.下列函数不能和函数voidprint(char)构成重载的是()

A.intprint(int);

B.voidprint(char,char);

C.intprint(char);

D.voidprint(int,int);

11.在下列成对的表达式中,运算结果类型相同的一对是()

A.7/2和7.0/2.0

B.7/2.0和7/2

C7.0/2和7/2

D.7.0/2.0和7.0/2

12.内联函数的特点是()

A.减少代码量,加快访问速度

B.减少代码量,减缓访问速度

C.增加代码量,减缓访问速度

D.增加代码量,加快访问速度

13.类的私有成员可在何处被访问()

A.本类的成员函数中

B.本类及子类的成员函数中

C.通过对象名在任何位置

D.不可访问

14.类的构造函数在以下什么情况下会被自动调用()

A.定义成员函数时

B.定义对象时

C.定义数据成员时

D.定义友元函数时

15.下列关于析构函数描述正确的是()

A.可以重载

B.函数体中必须有delete语句

C.返回类型必须是void类型

D.不能指定返回类型

16.设有函数TSum(Tx,Ty){returnx+y;),其中T为模板类型,则下列语句中对该函数

错误的使用是()

A.Sum(l,2);

B.Sum(3.0,2.2);

CSum('A','C');

D.Sum("A〃,"C");

17.下列哪个编译指令属于条件编译指令()

A.^include

B.^define

C.#else

D.Spragma

18.关于类的静态成员函数描述错误的是()

A.在创建对象前不存在

B.不能说明为虚函数

C.不能直接访问非静态函数

D.不是对象的成员

19.如果类A被声明成类B的友元,则()

A.类A的成员即类B的成员

B.类B的成员即类A的成员

C.类A的成员函数不得访问类B的成员

D.类B不一定是类A的友元

20.派生类的对象可以访问以下那种情况继承的基类成员()

A.私有继承的私有成员

B.公有继承的私有成员

C.私有继承的保护成员

D.公有继承的公有成员

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

请在每小题的空格中填上正确答案。错填、不填均无分。

21.若使用标准输出流把整型变量a的值输出到屏幕上,实现此操作的C++语句是。

22.C++将数据从一个对象流向另一个对象的流动抽象为“流”,从流中获取数据的操作称为

23.执行下列代码

intb=100;

cout«/zllex:z/«hex<<b;

程序的输出结果是。

24.静态联编所支持的多态性称为的多态性。

25.C++程序必须有且只有一个主函数,其函数名为。

26.写出声明一个复数对象的语句,并使该对象被初始化为2.2+1.3i,此声明语句是o

27.若有函数定义为:

intadd(intml=0,intm2=2,intm3=4)

{returnml+m2+m3;}

在主函数中有ints=add(l)+add(0,l)+add(0,1,2);

则执行此语句后s的值为。

28.C++中使用关键字说明函数为内联函数。

29.在源程序中有宏定义:#definePI3.14,则若不想使该宏定义影响到程序的其它地方,

可以使用删除该宏定义。

30.类和其它数据类型不同的是,组成这种类型的不仅可以有数据,还可以有对数据进行操作

的。

31.有下列代码inta=0;doubleb=0;cin»a»b;当用键盘输入1.25时,b=。

32.对于类Point而言,其析构函数的定义原型为____o

33.对象成员构造函数的调用顺序取决于这些对象在类中说明的顺序,与它们在成员初始化列

表中给出的顺序______O

34.类的简单成员函数是指声明中不含、volatile,static关键字的函数。

35.与操作对象的数据类型相互独立的算法称为____。

36.从一个或多个以前定义的类产生新类的过程称为o

37.在vector类中向向量尾部插入一个对象的方法是____。

38.C++中用于动态创建对象,并返回该对象的指针的关键字是o

39.C++的流类库预定义的与标准输出设备相联接的流是____。

40.执行下列代码

cout<<noshowpoint<<123.0;

程序输出结果是O

三、改错题(本大题共5小题,每小题2分,共10分)

下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见。

41.#include<iostream.h>

classf{

private:floatx,y;

public:f(floata,floatb){x=a;y=b;}

floatmax(){return(x<y)?x:y;}//求最大值

};

main(){

fa(l.5,3.8);

cout<<a.max()<<endl;

}

42.#include<iostream.h>

classtest{

private:intx;

public:test(inta){x=a;}

voidset(inta){x=a;}

voidget(){cout<<x<<endl;}

)

main(){

consttesta(3);

A.set⑸;

A.get();

}

43.#include<iostream.h>

classpoint{

private:floatx,y;

public:fl(floata,floatb){x=a;y=b;}

point(){x=0;y=0;}

voidgetx(){cout<<x<<endl;}

voidgety(){cout«y«endl;}

};

voidprint(pointa){cout«a.x«endl;}

main(){

pointa;

A.fl(3.0,5.0);

print(a);

)

44.#include<iostream.h>

classf(

private:intx,y;

public:fl(inta,intb){x=a;y=b;}

voidprint(){cout«x«y<<endl;}

};

mainO{

fa;

A.fl(1.5,1.8);

A.print();

)

45.#include<iostream.h>

main(){

intx=6;

constint*p二x;

cout<<*p«endl;

)

四、完成程序题(本大题共5小题,每小题4分,共20分)

46.完成下面程序,使其输出10,并在退出运行时正确释放分配给指针的存储空间。

#include<iostream>

usingnamespacestd;

voidmain()

(

int*a,*p;

a=newint(10);

P=;

cout<<*p<<endl;

47.#include<iostream>

usingnamespacestd;

classbase

(

private:intx;

public:base(inta){x=a;}

intget(){returnx;}

voidshowbase(){cout«,,x="z<<x<<endl;}

);

classDerived:publicbase

{private:inty;

public:Derived(inta,intb):base(a){y=b;}

voidshowderivedO

{cout<<,,x=,,<<get()<<",y=zz<<y<<endl;}

);

voidmain()

(

baseb(3);

Derivedd(6,7);

b.showbase();

d.showderivedO;

b.showbase();

bl.showbase();

base*pb=&bl;

pb—>showbase();

d.showderivedO;

b.showbase();

)

输出结果如下:

x=3

x=6,y=7

x=6

x=6

x=6

x=6,y=7

x=6

48.下面程序的运行结果如下:

B::display()

C::display()

在下划线处填上缺少的部分。源程序如下:

#include<iostream>

usingnamespacestd;

classB

(

public:

display(){cout<<〃B::display()〃<<endl;

);

classC:publicB

public:

display(){cout«,,C::display(),z«endl;}

);

voidfun(B*p)

(

p->display();

)

voidmain()

(

Bb,*pb;

Cc;

pb=&b;

fun(pb);

pb=&c;

fun(pb);

)

49.下面程序的运行结果如下:

Thisislinel

Thisisline2

Thisisline3

在下划线处填上缺少的部分。源程序如下:

ttinclude<iostream>

ttinclude

usingnamespacestd;

voidmain()

(

fstreamfin,fout;

fout.open(〃my.txt〃,ios::out);

if(!fout.is_open())

return;

for(inti=0;i<3;i=i+l)

fout«/zThisislinez,<<i+l«endl;

fout.closeO;

fin.open(〃my.txt〃,ios::in);

if(!fin.is_open())

return;

charstr[100];

while()

(

fin.getline(str,100);

cout<<str<<endl;

)

fin.close();

)

50.在下划线处填上缺少的部分。源程序如下:

#include<iostream>

usingnamespacestd;

Tfun(Tx)

(

______y;

y=x*x-T(5);

returny;

)

voidmain()

(

floata=2;

cout«fun(a);

)

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

51.请写出myTextl.txt文本文件中的内容

#include<iostream>

#include<string>

usingnamespacestd;

#include<fstream>

voidmain()

(

ofstreammyFilel;

myFilel.open(z/myTextl.txt〃);

cout«z/EnterthedatainChineseformat(e.g.,2008,May25):/z<<endl;

stringDate(“2008,January1");

stringYear=Date,substr(0,4);

intk=Date.find(",");

inti二Date,find(〃〃);

stringMonth=Date,substr(k+1,i-k-l);

stringDay=Date.substr(i+1,2);

stringNewDate=Day+〃〃+Month+〃〃+Year;

myFilel«,zoriginaldate:z,<<Date«endl;

myFi1e1«,zConverteddate:,z<<NewDate<<endl;

myFilel.close();

)

52.给出下面程序的输出结果

#include<iostream>

usingnamespacestd;

classSimple

intx,y;

public:

Simple(){x=y=O;}

Simple(inti,intj){x=i;y=j;}

voidcopy(Simple&s);

voidsetxy(inti,intj){x=i;y=j;}

voidprint()(cout«/,x=,/<<x<</,,y=z,<<y<<endl;}

);

voidSimple::copy(Simple&s)

(

x=s.x;y=s.y;

)

voidfunc(Simplesi,Simple&s2)

{

si.setxy(30,40);

s2.setxy(70,80);

)

voidmain()

(

Simpleobjl(1,2),obj2;

obj2.copy(objl);

func(objl,obj2);

objl.print();

obj2.print();

)

53.给出下面程序的输出结果

#includez/iostream.h〃

intmain()

(

inti=17;

while(i>=10)

if(―i%4=3)continue;

else

cout«,zi=,z<<i―<<endl;

)

54.给出下面程序的输出结果

#include<iostream>

usingnamespacestd;

voidmain()

(

intnum=300;

int&ref=num;

cout«ref;

ref=ref-100;

cout<<"〃<<num;

num=num-50;

cout<<,zzz<<ref<<endl;

)

六、程序设计题(本大题共1小题,共10分)

55.定义堆栈类模板Stack(先进后出),栈的大小由使用者确定。要求该类模板对外提供

如下二种基本操作:

(1)push入栈(2)pop出栈,用数组来实现

#include<iostream>

usingnamespacestd;

template<classT,intsize>

classStack{

Tx[size];

intcurrent;

public:

Stack(){current=0;}

....push(....);

....pop(....);

};

请写出两个函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型)

全国2009年10月自学考试

C++程序设计试题

课程代码:04737

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

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

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

1.对C++中主函数描述正确的是()

A.名称为main,可为多个

B.名称不限,可为多个

C.名称为main,必须有且只能有一个

D.名称不限,必须有且只能有一个

2.调用声明为intresult(inta,intb)的函数时,正确的方法是()

A.result(1,2)

B.result(1)

C.result(0.1,0.3)

D.result(1,2,3)

3.用于包含C++标准库iostream的预处理指令是()

A.ftdefine

B.#include

C.#define<iostream,

D.#include'iostream'

4.无类型标识符是指()

A.void

B.bool

C.short

D.long

5.从本质上看,引用是被引用变量的()

A.拷贝

B.别名

C.复制

D.克隆

6.下面关于数组的初始化正确的是()

A.charstr[]={'a','b','c'};

B.charstr[2]={'a','b','c'};

C.charstr[l][2]={{,a,,'b*},{'e','d'}};

D.charstr[][]={'a'b'c'};

7.C++类中定义的成员默认访问属性为()

A.public

B.private

C.protected

D.friend

8.决定C++语言中函数的返回值类型的是()

A.return语句中的表达式类型

B.调用该函数时系统随机产生的类型

C.调用该函数时的主调用函数类型

D.在定义该函数时所指定的数据类型

9.函数int&min(int&,int&)返回参数中较小者,设有两整型变量inta=10;intb=15;

在执行语句min(a,b)-;之后,a,b值分别为()

A.9,14

B.9,15

C.10,14

D.10,15

10.声明函数为内联函数时所使用的关键字为()

A.const

B.inline

C.short

D.signed

IL函数intsum(inta=l,intb=l,intc=3)可与下列哪个函数同时声明()

A.doublesum(int);

B.charsum(int,int);

C.intsum(double);

D.intsum(int,int,int);

12.函数模板templatevoidFunc(T,T)可具有下列哪种实例化形式()

A.voidFunc(float,int)

B.voidFunc(char,char)

C.voidFunc(int,double)

D.voidFunc(bool,float)

13.下列访问成员的方式哪个是正确的()

A.对象名,对象成员名

B.对象指针名.对象成员名

C.对象名f对象成员名

D.类名一对象成员名

14.对类A,复制构造函数的原型是()

A.A::A(constA&);

B.A::A(constA*);

C.A::A(constA);

D.A::A();

15.对classpoint,如使用point*ptr=newpoint[2];创建对象数组,则删除此数组使用

的语句是()

A.deleteptr[2];

B.deletet]ptr;

C.deleteptr[];

D.delete[2]ptr;

16.下列哪个编译指令不属于条件编译指令()

A.#if

B.#else

C.#endif

D.tterror

17.类A中存在静态数据成员x,设a和b是类A的两个对象,在执行a.x=10之后,b.x

的值为()

A.未初始化

B.等于a.x

C.等于0

D.随机

18.使用string/库操纵字符串时,将两个字符串连接成一个字符串的函数是()

A.strlen()

B.strcap()

C.strcat()

D.strcmp()

19.基类中的public成员,通过public派生,其在派生类中的访问权限为()

A.不可访问

B.private

C.protected

D.public

20.不同对象调用同名函数,但导致完全不同行为的现象称为()

A.抽象

B.封装

C.继承

D.多态性

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

请在每小题的空格中填上正确答案。错填、不填均无分。

21.在C++语言的面向对象设计框架中,是程序的基本组成单元。

22.执行代码doublepi=3.1415192;cout<<setprecision(3)<<pi;程序的输出结果

是»

23.C++语言提供的的基本控制结构可以分为3种类型:顺序结构、和循环结构。

24.要使用STL库提供的对数组进行降嘉排序算法,在源程序中需要包含的头文件是o

25.在C++标准库中,用类来表示复数。

26.将对象作为函数参数,是将实参对象的传递给形参对象,这种传递是单向的。

27.C++函数的返回类型可以是除数组与以外的任何类型。

28.能提供封装的C++关键字是。

29.在C++的类声明中,用public关键字声明的类成员的访问权限是。

30.开发一个C++语言程序的步骤通常包括编辑、、连接、运行和调试。

31.C++类中的_____函数在对象的生存期结束时被自动调用。

32.友元函数可以存取类的、公有成员和保护成员。

33.若类的成员函数用关键字static进行修饰,这样的成员函数称为。

34.在C++中,创建派生类对象时•,总是先从的初始化开始的。

35.类的继承是指派生类继承基类的数据成员和。

36.在C++中,利用向量类模板定义一个具有20个double的向量,其元素均被置为0.5,实

现此操作的语句是。

37.vector类中用于返回向量中的最后一个对象的方法是。

38.虚函数类似于重载函数,但与重载函数的实现策略不同,对虚函数声明时应使用

关键字。

39.在C++中,虽然友元提供了类之间数据进行访问的•种方式,但它破坏了面向对象程序设

计的_______特性。

40.执行下列代码

cout<<showpoint<<123.0;程序的输出结果是。

三、改错题(本大题共5小题,每小题4分,共20分)

下面的每个程序都有一处错误,请用下横线标出错误所在行并给出修改意见。

41.#include

usingnamespacestd;

intmain(){

intnum;max=10;num=1

while(num<max)num++;

cout<X"Num="«num;

return0;

)

42.#include

usingnamespacestd;

classA{

voidshow(){

cout<<"Hello!";

}

);

intmain(){

Aa;a.show();

return0;

)

43.#include

usingnamespacestd;

intmain()(

constintnum=20;

intscores[num];

for(inti=l;i<=num;i++){

scores[i]=i;

}

return0;

)

44.#include

usingnamespacestd;

classCMax{

private:

intxx;intyy;

public:

CMax(intx,inty)

{xx=x;yy=y;}

voidsetValue(intx,inty)

{xx=x;yy=y;}

intmax(){

returnxx>yy?xx:yy;

)

};

voidmain(){

CMaxm();

m.setValue(20,30);

cout<<"Max="<}

45.^include

usingnamespacestd;

classA{

public:

charname[255];

private:

char*getName()

{returnname;}

);

classB:publicA{

public:

B(char*n){

strcpy(name,n);

)

};

voidmain(){

Bb(〃Hello!");

cout<<"Name:"<}

四、完成程序题(本大题共5小题,每小题4分,共20分)

46,将下面程序补充完整,使程序输出结果为:

Begin

Welcome

Show

End

程序如下:

#include

usingnamespacestd;

classA{

public:

cout<<〃Begin"<}

voidshow(){

cout<<"Show"<}

cout<<z,End"<}

);

Aobject;

intmain(){

cout«,zWelcome<object.show();

return0;

)

47.请将下面程序补充完整,使程序可以正常打印9X9乘法口诀。

#include

usingnamespacestd;

classA{

private:

inta;intb;

public:

{a=x;b=y;}

voidset(intx,inty)

{a=x;b=y;}

voiddisplay(){

cout<}

};

intmain(){

Aa(l,1);

for(inti=l;i<=9;i++){

for(intj=l;____;j++){

a.set(j,i);

a.display();

cout<<"";

}

cout<)

return0;

)

48.将下面程序补充完整,使程序可以输入学生信息并计算平均成绩。

#include

#include

usingnamespacestd;

classStudent{

private:

charname[255];

intscore[10];

public:

Student(charn[],ints[]){

for(inti=0;i<10;i++){

score[i]=s[i];

)

)

voidShow(){

intsum=0;

for(inti=0;i<10;i++){

)

cout<<〃名字:“<<name«w,平均成绩:〃<}

);

voidmain(){

charname[255];

intscore[10];

cout«ff姓名:";cin»name;

for(inti=0;i<10;i++){

cout<<"成绩"<cin〉〉score[i];

}

Students(name,score);

s.Show();

}

49.将下面程序补充完整,使程序可以正常运行,并释放内存。

#include

classA{

private:

T*data;

intlength;

public:

A(intlen){

length=len;

data二newT[len];

)

〜A()(

)

T&operator[](inti){

returndata[i];

}

};

intmain(){

Aobj(2);

obj[0]=l;

obj[l]=2;

cout<cout<return0;

}

50.将下面程序补充完整,使程序运行结果为:

ClassA

ClassB

程序如下:

#include

#include

classA(

public:

virtualvoidGetA()=0;

};

classB:publicA(

private:

charstr[32];

public:

voidGetA(){

cout<<"ClassA"<}

constchar*GetB(){

)

B(char*s){

strcpy(str,s);

}

};

voidmain(){

A*a;

Bb(〃ClassB");

a=;

a->GetA();

cout<return;

)

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

51.ttinclude

usingnamespacestd;

intmain(){

inti,j;

for(i=l;i<=4;i+=l)

for(j=2;j<=4;j+=j){

if(i+j<5)

cout<<"+f,;

else

cout<<"*";

return0;

52.ttinclude

usingnamespacestd;

classA{

inta;

public:

A(intaa=O){a=aa;}

-A(){cout<<〃DestructorA!”<};

classB:publicA{

intb;

public:

B(intaa=0,intbb=0):A(aa){b=bb;}

〜B(){cout<<"DestructorB!«b«endl;}

);

voidmain(){

Bx(5),y(6,7);

)

六、程序设计题(本大题10分)

53.下面Shape类是•个表示形状的抽象类,Area()为求图形面积的函数。请从Shape类派

生梯形类(Trapezoid)、圆形类(Circle),三角形类(Triangle),并给出具体的求面积函

数。其中,所有派生类计算面积需要用到的参数由构造函数给出,梯形面积计算需要上底、

下底和高,三角形面积需要底和高,圆形面积需要半径。

形状的抽象类声明如下:考试大收集整理

classShape(

public:

virtualdoubleArea(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论