长安大学期末考试C++样题Word下载.docx
- 文档编号:18180319
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:22
- 大小:22.17KB
长安大学期末考试C++样题Word下载.docx
《长安大学期末考试C++样题Word下载.docx》由会员分享,可在线阅读,更多相关《长安大学期末考试C++样题Word下载.docx(22页珍藏版)》请在冰豆网上搜索。
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
P(inti,intj)
{p=i;
}
voidfun();
private:
;
四.分析下列程序的输出结果(分析结果写在该程序左边或右边的空白处;
每小题5分,共30分)
1.
#include<
iostream.h>
voidmain()
inta=40;
while(--a)
{
if(a==20)
break;
if(a%2==0||a%3==0||a%5)
continue;
cout<
<
a-1<
endl;
}
2.
intx(5);
int&
fun(int&
);
inty=fun(x)--;
cout<
y<
}
intw;
int&
i)
w=i*i;
returnw;
3.
inty=3;
intfun(int,int=2,int&
c=y);
inta
(2),b(3),c(4);
intx=fun(a);
inty=fun(a,b);
intz=fun(a,b,c);
x+y+z<
intfun(inta,intb,int&
c)
a=b;
b=c;
c=a;
a+b+c<
returna+b+c;
4.
classAB
public:
AB(inti,intj):
b(j)
{ab=i+2;
"
AB\n"
;
~AB()
{cout<
ab<
friendintfun(AB&
a);
private:
staticinta;
intab;
constintb;
};
intfun(AB&
a)
{returnAB:
:
a+a.b+a.ab;
intAB:
a(0);
ABa(2,3),b(4,5);
cout<
fun(a)<
'
'
fun(b)<
5.
classPQ
public:
PQ(inti=0)
{p=i;
voidprint()
p<
~PQ()
PQ"
private:
intp;
PQa(8);
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.
classM
M(inti)
{a=i;
voidf1()
a<
M'
~M()
protected:
inta;
classN:
publicM
N(inti,intj,intk):
M(i),aa(j)
{b=k;
voidf1()
aa.f1();
b<
N'
~N()
Maa;
intb;
voidfun(Ma)
a.f1();
Ma1(15);
Nb1(13,15,17);
a1.f1();
b1.f1();
fun(b1);
五.分析程序回答问题(共10分)#include<
classA
A()
{a1=a2=0;
A(inti,intj)
{a1=i;
a2=j;
~A()
A\n"
A(A&
{
a1=a.a1+2;
a2=a.a2+2;
C\n"
a1+a2<
inta1,a2;
voidfun(A&
Ab;
b=a;
b.print();
{Ax(4,8),y;
Ap(x);
y=x;
fun(p);
y.print();
1.该程序调用了几次构造函数(全部)?
(3分)
2.函数fun()中,b.print()输出值是多少?
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.
staticinta;
Bb;
A(inti,intj):
B(i,j)
staticvoidf1()
classP:
publicQ
P(inti,intj):
Q(j)
friendvoidfun();
intp;
四.分析下列程序的输出结果(部分答对酌情给分;
每小题全对5分,共30分)
1.34
24
2.
25
3.
7
8
10
25
4.
AB
7,11
6
4
5.
7
PQ7
PQ8
6.
15M
13
17M
13M
M
N
五.分析程序回答问题(共10分)
4.该程序调用了几次构造函数(全部)?
(2分)
答:
4次
5.函数fun()中,b.print()输出值是多少?
12
6.该程序调用了几次拷贝构造函数?
1次
指针pa的引用ref定义如下:
int*&
ref=pa;
表达式*ref*8的值:
80
intfun(int);
常成员函数fun()说明如下:
intfun(int)const;
在类体外该函数定义如下:
intA:
fun(inta)const
returna*a;
使用指针作函数形参时对应实参使用变量或对象的地址值,而使用引用作函数形参时对应实参使用变量或对象值。
4.在两个不同的类中,A类对象可以赋值给B类的对象,要求A类和B类有什么关系?
A类公有继承B类
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<
put(“MN”);
B.cout<
”MN”;
C.cout.put(“MN”);
D.cout<
write(“MN”);
10.下列打开磁盘文件的访问方式常量中,____是以读方式打开文件的。
A.outB.inC.ateD.app
四、分析下列程序的输出结果(30分)
1.
inta;
M(inti=15){a=i;
inM\n"
intgeta(){returna;
Mr1,r2(18);
oct<
r1.geta()<
dec<
r2.geta()<
doublex;
A(doublei){x=i;
}
Aoperator+(Ac)
{returnA(x*c.x);
doubleGetx(){returnx;
Aa(0);
a=A(3)+A(4);
a.Getx()+8<
classP1
P1(inti){p1=i;
virtualintfun(){returnp1;
intp1;
classP2:
publicP1
P2(inti,intj):
P1(i),p2(j){}
intfun(){returnp2;
intp2;
P1*pf=newP1(10);
P2*pd=newP2(8,18);
P1&
b=*pd;
pf->
fun()<
b.fun()<
(*pd).fun()<
deletepf;
deletepd;
{
taticintN;
int*a;
A(intk)
{
a=newint[N];
for(intj=0;
j<
N;
j++)
a[j]=j+k;
intgeta(inti)
{return*(a+i);
staticintgetN()
{returnN;
~A()
{cout<
D\n"
delete[]a;
Ax(6),y(9);
for(inti=0;
i<
A:
getN();
i++)
x.geta(i)+y.geta(i)<
N=3;
classR
R()
inR\n"
virtualvoidfun(inti)
R:
char*gun()
{return"
HELLO\n"
classT:
publicR
voidfun(inti)
T:
voidf1(R&
a.fun(88);
a.gun();
voidf2(Ra)
a.fun(99);
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.A10.B
每小题全对6分,共30分)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 长安 大学 期末考试 C+ 样题