长安大学期末考试C++样题.docx

上传人:b****3 文档编号:12747461 上传时间:2023-04-21 格式:DOCX 页数:26 大小:22.35KB
下载 相关 举报
长安大学期末考试C++样题.docx_第1页
第1页 / 共26页
长安大学期末考试C++样题.docx_第2页
第2页 / 共26页
长安大学期末考试C++样题.docx_第3页
第3页 / 共26页
长安大学期末考试C++样题.docx_第4页
第4页 / 共26页
长安大学期末考试C++样题.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

长安大学期末考试C++样题.docx

《长安大学期末考试C++样题.docx》由会员分享,可在线阅读,更多相关《长安大学期末考试C++样题.docx(26页珍藏版)》请在冰豆网上搜索。

长安大学期末考试C++样题.docx

长安大学期末考试C++样题

样题1试题

一.单选题(所选字母填写在()内;每1小题分,共10分)

1.已知:

intx,y;下列表达式中,非法的是()。

A.x%yB.y=-xC.--(x*y)D.x+=y

2.已知:

intx,y;下列循环的执行次数是()。

for(x(0),y(0);!

y&&x<=5;x++,y++)

{…}

A.1B.2C.5D.无限

3.己知:

inta,*p;下列操作中,非法的是()。

A.p=aB.p=&aC.*p=9D.p!

=a;

4.下列有关语句的描述中,错误的是()。

A.条件语句中,else子句可以有0个或1个

B.Continue语句只能出现在循环体内

C.Switch语句不能出现在循环体内

D.循环语句可以自身嵌套,也可以相互嵌套

5.下列关于构造函数的描述中,错误的是()。

A.构造函数是没有名字的B.构造函数是可以重载的

C.构造函数是系统自动调用的D.构造函数是可以没有参数的

6.下列关于运算符new的描述中,错误的是()。

A.new运算符用来创建动态对象

B.new运算符用来创建堆对象时可进行初始化

C.用new运算符创建的对象可用delete运算符释放

D.用new运算符可创建对象数据,并可同时进行初始化

7.下列关于公有继承方式下基类成员在派生类中访问性的描述,其中错误的是()。

A.基类中私有成员在派生类中为私有成员

B.基类中公有成员在派生类中为公有成员

C.基类中保护成员在派生类中为保护成员

D.派生类中成员函数不能访问基类私有成员

8.类的构造函数的成员初始化列表中,不可以包含()。

A.基类构造函数B.子对象类的构造函数

C.静态数据成员初始化D.常数据成员的初始

9.已知:

B类是A类的公有继承的派生类,下列描述中,错误的是

()。

A.A类的对象就是B类的对象

B.B类对象可以给A类对象赋值

C.B类对象的地址值可以给A类对象指针赋值

D.B类对象可以给A类对象引用赋值

10.下列关于派生类定义格式的描述中,错误的是()。

A.定义派生类可用关键字class或struct

B.定义派生类时要指出派生类的类名和基类的类名

C.定义派生类时一定要给出继承方式,不能默认

D.定义派生类时,类体中给出派生类的成员

二.判断题(对者茌题号前划∨,错者划茌题号前×;每小题0.5分,共10分)

1.函数体和循环语句的循环体都可为空。

2.数组下标只能是常量,不能是表达式。

3.使用delete运算符释放一个用new创建的数组时,每次只能释放一个元素。

4.设置函数参数默认值只能用常量,不能用表达式。

5.一个类的对象可以是该类的成员。

6.内部静态对象是全局对象,因为它的寿命是长的。

7.引用是一种可做函数参数的变量。

8.只有运算符++,--,才具有副作用。

9.构造函数与拷贝构造函数的名字都与类名相同。

10友元函数只能访问类中的私有成员。

11.单继承中,一个派生类只有一个基类,而一个基类可以生成多个派生类。

12.派生类对基类成员的可访问性与派生类对象对基类成员的可访问性是相同的。

13.保护继承方式下,基类中公有成员和保护成员在派生类中都是保护成员。

14.在公有继承和保护继承方式下,基类中的公有成员在直接派生类和间接派生类中都是可访问的,而直接派生类和间接派生类的对象也可访问。

15.静态数据成员应该在构造函数的成员初始化列表中进行初始化。

16.友元函数是说明在类体内的成员函数,它的定义应在类体外。

17.用new创建的堆对象,在使用delete释放时必须是先创建的后释放,后创建的先释放。

18.在C++程序中,创建一个对象时系统自动调用构造函数进行初始化,如果一个类中没有定义构造函数,则无法创建对象。

19.友元类中的所有成员函数只能访问友元类所在类中的私有成员。

20.所有的成员函数都可以重载。

三.填空题(将适当的内容填写在下划线上面,每个空1分,共10分)

1.定义类A中有两个公有的成员函数,其中一个是构造函数,另一个是静态成员函数f1(),还有两个私有的数据成员,一个是静态数据成员a,另一个类B的对象b。

类B中有两个私有的数据成员。

为满足上述要求,请填写下列程序的空白处。

……

A

{

inta;

b;

public:

(inti,intj):

{}

voidf1()

};

……

2.P类公有继承Q类,P和Q类中都仅有一个私有的数据成员,P类中两个成员函数,一个是构造函数,另一个友元函数fun()。

下列一段程序实现上述要求,请将空白处填上适当的内容。

……

classP

{

public:

P(inti,intj)

{p=i;}

voidfun();

private:

};

……

四.分析下列程序的输出结果(分析结果写在该程序左边或右边的空白处;

每小题5分,共30分)

1.

#include

voidmain()

{

inta=40;

while(--a)

{

if(a==20)

break;

if(a%2==0||a%3==0||a%5)

continue;

cout<

}

}

2.

#include

voidmain()

{

intx(5);

int&fun(int&);

inty=fun(x)--;

cout<

}

intw;

int&fun(int&i)

{

w=i*i;

returnw;

}

3.

#include

inty=3;

intfun(int,int=2,int&c=y);

voidmain()

{

inta

(2),b(3),c(4);

intx=fun(a);

inty=fun(a,b);

intz=fun(a,b,c);

cout<

}

intfun(inta,intb,int&c)

{

a=b;b=c;c=a;

cout<

returna+b+c;

}

4.

#include

classAB

{

public:

AB(inti,intj):

b(j)

{ab=i+2;cout<<"AB\n";}

~AB()

{cout<

friendintfun(AB&a);

private:

staticinta;

intab;

constintb;

};

intfun(AB&a)

{returnAB:

:

a+a.b+a.ab;}

intAB:

:

a(0);

voidmain()

{

ABa(2,3),b(4,5);

cout<

}

5.

#include

classPQ

{

public:

PQ(inti=0)

{p=i;}

voidprint()

{cout<

~PQ()

{cout<<"PQ"<

private:

intp;

};

PQa(8);

voidmain()

{

PQ*p1,*p2;

p1=newPQ(7);

p2=newPQ[2];

p2[0]=a;

p2[1]=*p1;

(*p1).print();

p2[0].print();

p2[1].print();

deletep1;

delete[]p2;

}

6.

#include

classM

{

public:

M(inti)

{a=i;}

voidf1()

{cout<

~M()

{cout<<'M'<

protected:

inta;

};

classN:

publicM

{

public:

N(inti,intj,intk):

M(i),aa(j)

{b=k;}

voidf1()

{

cout<

aa.f1();

cout<

}

~N()

{cout<<'N'<

private:

Maa;

intb;

};

voidfun(Ma)

{

a.f1();

}

voidmain()

{

Ma1(15);

Nb1(13,15,17);

a1.f1();

b1.f1();

fun(b1);

}

五.分析程序回答问题(共10分)#include

classA

{

public:

A()

{a1=a2=0;}

A(inti,intj)

{a1=i;a2=j;}

~A()

{

cout<<"A\n";}

A(A&a)

{

a1=a.a1+2;a2=a.a2+2;

cout<<"C\n";

}

voidprint()

{cout<

private:

inta1,a2;

};

voidfun(A&a)

{

Ab;

b=a;

b.print();

}

voidmain()

{Ax(4,8),y;

Ap(x);

y=x;

fun(p);

y.print();

}

1.该程序调用了几次构造函数(全部)?

(3分)

2.函数fun()中,b.print()输出值是多少?

(3分)

3.该程序调用了几次拷贝构造函数?

(4分)

六.简单回答问题(每小题回答结果写在该题下面空白处;每小题2分,共10分)

1.己知:

inta=10,*pa=&a;定义一个指针pa的引用ref,并计算表达式*ref*8的值。

2..已知:

A类中有一个成员函数说明如下:

intfun(int);

请将该成员函数fun()说明常成员函数,其格式如何?

该函数的功能是返回该参数的平方,写出在类体外定义该函数的语句。

3.使用指针作函数参数和使用引用作函数参数有何不同?

4.在两个不同的类中,A类对象可以赋值给类B的对象,要求A类和B类有什么关系?

5.C++语言中有关函数定义方面与C语言有何不同?

 

样题1参考答案

二.单选题(每1小题分,共10分)

1.C2.A3.B4.C5.A6.D7.A8.C8.A10.B

三.判断题(每小题0.5分,共10分)

对的有:

2,5,8,9,11,13,14,16,20

三.填空题(每个空1分,共10分)

1.

classA

{

staticinta;

Bb;

public:

A(inti,intj):

B(i,j)

{}

staticvoidf1()

};

2.

classP:

publicQ

{

public:

P(inti,intj):

Q(j)

{p=i;}

friendvoidfun();

private:

intp;

};

 

四.分析下列程序的输出结果(部分答对酌情给分;每小题全对5分,共30分)

1.34

24

2.

25

3.

7

8

10

25

4.

AB

AB

7,11

6

4

5.

7

8

7

PQ7

PQ7

PQ8

PQ8

6.

15M

13

15M

17M

13M

M

M

N

M

M

五.分析程序回答问题(共10分)

4.该程序调用了几次构造函数(全部)?

(2分)

答:

4次

5.函数fun()中,b.print()输出值是多少?

(2分)

答:

12

6.该程序调用了几次拷贝构造函数?

(2分)

答:

1次

六.简单回答问题(每小题回答结果写在该题下面空白处;每小题2分,共10分)

1.己知:

inta=10,*pa=&a;定义一个指针pa的引用ref,并计算表达式*ref*8的值。

答:

指针pa的引用ref定义如下:

int*&ref=pa;

表达式*ref*8的值:

80

2..已知:

A类中有一个成员函数说明如下:

intfun(int);

请将该成员函数fun()说明常成员函数,其格式如何?

该函数的功能是返回该参数的平方,写出在类体外定义该函数的语句。

答:

常成员函数fun()说明如下:

intfun(int)const;

在类体外该函数定义如下:

intA:

:

fun(inta)const

{

returna*a;

}

3.使用指针作函数参数和使用引用作函数参数有何不同?

答:

使用指针作函数形参时对应实参使用变量或对象的地址值,而使用引用作函数形参时对应实参使用变量或对象值。

4.在两个不同的类中,A类对象可以赋值给B类的对象,要求A类和B类有什么关系?

答:

A类公有继承B类

5.C++语言中有关函数定义方面与C语言有何不同?

答:

C++语言中函数定义肘时,不可缺省函数类型;函数体内说明语句位置不受限制函;数说明使用原型说明;可以定义重载函数;可以定义内联函数;可以设置函教参数的默认值。

样题2试题

一、判断题(对者在题号前划√,错者在题号前划×)(20分)

1.构造函数可以重载。

2.类的数据成员不一定都是私有的。

3.对象数组的元素应是同类的对象。

4.任意一种构造函数都具有转换类型功能。

5.在私有继承中,基类中只有公有成员对派生类是可见的。

6.引用可以作函数参数,不能作函数的返回值。

7.抽象类是不能创建对象的。

8.析构函数是不能被定义为虚函数的。

9.C++语言既支持单继承,又支持多继承。

10.put()函数只能从标准流对象cin中提取字符。

11.引用的值是不可以被改变的,它的值永远是被引用的变量的值。

12.定义一个对象时,系统总会对该对象进行初始化。

13.没有参数的构造函数称为默认构造函数,该构造函数一定是系统自动生成的。

14.在用一个对象给同类的另一个对象赋值时,调用拷贝初始化构造函数。

15.静态对象的成员称为静态成员。

16.友元类中的所有成员函数都是友元函数。

17.this指针是指向对象的指针,是系统自动生成的。

18.运算符new可以创建对象,也可创建对象数组。

19.定义派生类时必须指出基类名和继承方式,二者都不可默认。

20.C++语言对标准文件的读写函数与对磁盘文件的读写函数是一致的。

二、填空题(20分)

1C++语言中,类的继承方式有三种,分别是____________、____________、

_________________。

2定义静态成员使用______________关键字,静态成员是属于_______________的。

3堆对象的创建使用__________运算符,删除使用__________运算符。

4运算符重载的两种方式是___________和____________。

5含有___________的类称为抽象类。

三、单选填空题(20分)

1.关于new运算符的下列描述中,____是错误的。

A.创建对象时必须指定初始值B.用它创建的对象应用delete来删除

C.可用它来创建动态对象D.创建对象时要调用构造函数

2.派生类的对它基类中____成员不可以访问。

A.公有继承的公有B.公有继承的私有

C.公有继承的保护D.私有继承的公有

3.关于派生类的下列描述中_____是错误的。

A.派生类中继承基类成员的访问权限不变B.派生类至少有一个基类

C.派生类还可作另一个派生类的基类D.派生类中包含它基类中的成员

4.下列对重载函数的描述中_____是正确的。

A.运算符重载可以改变结合性B.运算符重载可以改变优先级

C.运算符重载可以改变操作数的个数D.运算符重载不可以改变语法结构

5.在类体内说明虚函数使用的关键字是____。

A.virtualB.friendC.inlineD.static

6.下列关于构造函数的特征中,____是正确的。

A.不可以重载B.不可以设置缺省参数

C.与类名不同D.不说明其类型

7.己知:

类Point中有一个成员函数说明如下

Point&Set(Pointa);

下面对返回值的描述由_____是正确的。

A.该函数无返回值B.该函数返回值是类Point对象

C.该函数返回值是类Point的对象的引用

D.该函数返回值是指向类Point的对象的地址

8.关于动态联编的下列描述中_____是错误的。

A.动态联编是以公有继承为基础的

B.动态联编是在运行中确定所选函数代码的

C.动态联编是在编译时确定所选函数代码的

D.动态联编要有虚函数

9.下列输出字符串”MN”的方法中,_____是正确的。

A.cout<

C.cout.put(“MN”);D.cout<

10.下列打开磁盘文件的访问方式常量中,____是以读方式打开文件的。

A.outB.inC.ateD.app

四、分析下列程序的输出结果(30分)

1.

#include

classM

{

inta;

public:

M(inti=15){a=i;cout<<"inM\n";}

intgeta(){returna;}

};

voidmain()

{

Mr1,r2(18);

cout<

cout<

}

2.

#include

classA

{

doublex;

public:

A(doublei){x=i;}

Aoperator+(Ac)

{returnA(x*c.x);}

doubleGetx(){returnx;}

};

voidmain()

{

Aa(0);

a=A(3)+A(4);

cout<

}

3.

#include

classP1

{

public:

P1(inti){p1=i;}

virtualintfun(){returnp1;}

private:

intp1;

};

classP2:

publicP1

{

public:

P2(inti,intj):

P1(i),p2(j){}

intfun(){returnp2;}

private:

intp2;

};

voidmain()

{

P1*pf=newP1(10);

P2*pd=newP2(8,18);

P1&b=*pd;

cout<fun()<

cout<

cout<<(*pd).fun()<

deletepf;

deletepd;

}

4.

#include

classA

{

taticintN;

int*a;

public:

A(intk)

{

a=newint[N];

for(intj=0;j

a[j]=j+k;

}

intgeta(inti)

{return*(a+i);}

staticintgetN()

{returnN;}

~A()

{cout<<"D\n";delete[]a;}

};

voidmain()

{

Ax(6),y(9);

for(inti=0;i

:

getN();i++)

cout<

}

intA:

:

N=3;

5.

#include

classR

{

public:

R()

{cout<<"inR\n";}

virtualvoidfun(inti)

{cout<<"R:

"<

char*gun()

{return"HELLO\n";}

};

classT:

publicR

{

public:

voidfun(inti)

{cout<<"T:

"<

};

voidf1(R&a)

{

a.fun(88);

cout<

}

voidf2(Ra)

{

a.fun(99);

cout<

}

voidmain()

{

Tb1,b2;

f1(b1);

f2(b2);

}

五、简单回答下列问题(10分)

1.什么是友元函数?

它有什么作用?

2.一个类的派生类是否还可以生成新的派生类?

派生类的构造函数是否必须有成员初始化列表?

3.静态数据成员有什么特点?

如何引用静态数据成员?

4.静态联编与动态联编的主要区别是什么?

虚函数是否是动态联编的唯一条件?

5.使用ifstreaminput;写出以读方式打开一个磁盘文件abc.txt的语句。

 

样题2参考答案

一.判断题(每小题1分,共20分)

对的有:

1,2,3,7,9,12,14,16,17,18,20

二.填空题(每个空2分,共20分)

1.public(公有方式),private(私有方式),protected(保护方式)

2.static,类

3.new,delete

4.成员函数方式,友元函数方式

5.纯虚函数

三.单选题(每小题2分,共20分)

1.A2.B3.A4.D5.A6.D7.C8.C9.

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

当前位置:首页 > 经管营销 > 经济市场

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

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