学年第一学期C++期末复习题网上的Word格式.docx
- 文档编号:7714782
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:19
- 大小:28.52KB
学年第一学期C++期末复习题网上的Word格式.docx
《学年第一学期C++期末复习题网上的Word格式.docx》由会员分享,可在线阅读,更多相关《学年第一学期C++期末复习题网上的Word格式.docx(19页珍藏版)》请在冰点文库上搜索。
A.virtualshow()=0;
B.virtualvoidshow()
C.virtualvoidshow()=0;
D.voidshow()=0virtual;
10.使用myFile.open(“sales.dat”,ios:
:
app)语句打开文件sales.dat后,则(A)
A.该文件只能用于输出
B.该文件只能用于输入
C.该文件既能用于输出,又能用于输入
D.若该文件存在,则清除该文件的内容
二、分析下列程序中的错误,并说明原因(前2题每题6分,第三题8分,共20分)
1.#include"
iostream.h"
classstudent
{
charname[10];
intage;
floataver;
voidprintStu(){}
};
voidmain()
studentp1,p2,p3;
p1.age=16;
//…
}
2.#include"
classstack
public:
stack(intsz);
private:
char*p;
intsize;
stack:
stack(intsz)
p=newchar[size=sz];
voidmain()
stackstt;
//...
3.#include"
classCTest
constinty2;
CTest(inti1,inti2):
y1(i1),y2(i2)
{
y1=10;
x=y1;
intreadme()const;
intx;
constinty1;
intCTest:
readme()const
inti;
i=x;
x++;
returnx;
CTestc(2,8);
inti=c.y2;
i=c.y1;
三、写出下列程序的运行结果(前2题每题6分,第三题8分,共20分)
classtoy
toy(intq,intp)
{quan=q;
price=p;
intget_quan()
{returnquan;
intget_price()
{returnprice;
intquan,price;
intmain()
toyop[2][2]={toy(10,20),toy(30,48),toy(50,68),toy(70,80)};
for(i=0;
i<
2;
i++)
cout<
<
op[i][0].get_quan()<
"
"
;
op[i][0].get_price()<
\n"
op[i][1].get_quan()<
op[i][1].get_price()<
cout<
return0;
2.#include"
classStock
voidprint()
{cout<
Stockclass.\n"
classDer1_Stock:
publicStock
Deri1_Stockclass.\n"
classDer2_Stock:
Deri2_Stockclass.\n"
Stocks1;
Stock*ptr;
Der1_Stockd1;
Der2_Stockd2;
ptr=&
s1;
ptr->
print();
d1;
d2;
3.#include"
classA
A(inti):
xi(i){}
A(){xi=0;
friendAoperator++(Aa);
friendAoperator--(A&
a);
voidprint();
intxi;
Aoperator++(Aa)
++a.xi;
returna;
Aoperator--(A&
a)
--a.xi;
voidA:
print()
{cout<
xi<
endl;
Ai(7);
++i;
i.print();
--i;
二
1.答案:
有错(3分),因为age是私有数据成员,不能直接访问(3分)
2.答案:
有错,(3分)类中没有定义无参构造函数(3分)
3.答案:
错误1:
有错(2分),y1是常成员,不能修改(1分)
错误2:
有错(2分),readme函数是常成员函数,不能修改对象的数据成员(1分)
错误3:
有错(1分),y1是私有变量,不能直接存取(1分)
三
10,20;
30,48;
50,6870,80
2.答案:
Stockclass.
Stockclass.
3.答案:
7
6
B卷
一、选择题(每题2分,共20分,答案填写在题后的表格内)
1.假设已经有定义constchar*constname=”chen”;
下面的语句中正确的是(D)
A.name[3]=’a’;
D.cout<
name[3];
2.假设已经有定义const
char*name=”chen”;
下面的语句中错误的是(A)
3.在下面有关对构造函数的描述中,正确的是(B)
A.构造函数可以带有返回值
B.构造函数的名字与类名完全相同
C.构造函数必须带有参数
D.构造函数必须定义,不能缺省
4.在下面有关析构函数特征的描述中,正确的是(C)
A.一个类可以定义多个析构函数B.析构函数名与类名完全相同C.析构函数不能指定返回类型
D.析构函数可以有一个或多个参数
5.在下面有关静态成员函数的描述中,正确的是(B)
A.在静态成员函数中可以使用this指针
B.在建立对象前,就可以为静态数据成员赋值
C.静态成员函数在类外定义时,要用static前缀
D.静态成员函数只能在类外定义
6.友元的作用之一是(A)
A.提高程序的运行效率
B.加强类的封装性
C.实现数据的隐藏性
D.增加成员函数的种类
7.假设已经定义好了一个类student,现在要定义类derived,它是从student私有派生的,定义类derived的正确写法是(C)
A.classderived:
studentprivate
B.classderived:
studentpublic
C.classderived:
privatestudent{//…
}
D.classderived:
publicstudent{//…
}
8.要实现动态联编,派生类中的虚函数(D)
A.返回的类型可以与虚函数的原型不同B.参数个数可以与虚函数的原型不同C.参数类型可以与虚函数的原型不同D.以上都不对
9.有关运算符重载正确的描述是(D)
A.C++语言允许在重载运算符时改变运算符的操作个数
B.C++语言允许在重载运算符时改变运算符的优先级
C.C++语言允许在重载运算符时改变运算符的结合性
D.C++语言允许在重载运算符时改变运算符的原来的功能
10.假设定义了函数模板:
template<
classT>
Tmax(Tx,Ty)
{return(x>
y)?
x:
y;
并定义了inti=6;
charc=’a’;
错误的调用语句是(D)
A.max(i,i)
B.max(c,c)
C.max((int)c,i)
D.max(i,c)
1.#include"
classpoint
{public:
intx,y;
point(){x=1;
y=2;
}};
{pointcpoint;
cpoint.x=2;
classStack
Stack(intsz)
{v=p=newT[size=sz];
~Stack()
{delete[]v;
voidpush(Tx)
{*p++=x;
Tpop()
{return*--p;
intlenth()const
{return(p-v);
T*v,*p;
intsize;
{Stack
obj(5);
obj.push(10);
3.#include"
{intsno;
intage;
voidprintStu();
voidsetSno(intd);
voidprintStu()
”\nStudentNo.is“<
sno<
”,”;
”ageis”<
age<
”.”<
voidsetSno(intd)
{sno=d;
voidsetAge(inta)
{age=a;
{studentlin;
lin.setSno(20021);
lin.setAge(20);
lin.printStu();
classb1
b1(intii)
{i=ii;
voiddisplay()
protected:
classb2
b2(intjj)
{j=jj;
j<
intj;
classb3:
publicb1,publicb2
b3(intii,intjj,intkk):
b1(ii),b2(jj)
{k=kk;
voidsetall(intii,intjj,intkk)
j=jj;
k=kk;
k<
intk;
{b1o1(40);
o1.display();
b2o2(50);
o2.display();
b3o3(10,20,30);
o3.display();
o3.setall(50,60,70);
virtualvoidprint()
{Stocks1;
3.#include<
iostream.h>
constintsize=10;
classType>
//声明一个类模板
{public:
voidinit(){tos=0;
voidpush(Typech);
//参数取Type类型
Typepop();
//返回类型取Type类型
Typestck[size];
//数组的类型为类型参数Type,即可取任意类型
inttos;
template<
voidstack<
Type>
push(Typeob)
{if(tos==size){cout<
stackisfull"
return;
stck[tos]=ob;
tos++;
Typestack<
pop()
{if(tos==0)
{cout<
stackisempty"
return0;
tos--;
returnstck[tos];
{
//定义字符堆栈
stack<
char>
s1,s2;
//创建两个模板参数为char型的对象
inti;
s1.init();
s2.init();
s1.push('
a'
);
s2.push('
x'
b'
y'
c'
z'
for(i=0;
3;
i++)cout<
pops1:
"
s1.pop()<
pops2:
s2.pop()<
1.答案:
pointcpoint;
是错误的(3分),因为构造函数是私有成员(3分)
Stack
有错(3分),因为Stack是类模板,应将模板实例化,才可定义对象(3分)
3.答案:
printStu、setSno两个成员函数不是公有成员,不允许在类外访问(4分)
错误2:
成员函数在类外定义,应加上类名“student:
:
”(2分)
错误3:
setAge函数应在类中说明(2分)
40
50
10
20
30
506070
Deri1_Stockclass.
Deri2_Stockclass.
c
pops1:
b
a
pops2:
z
y
x
A
卷
一、单项选择题:
(每小题2分,共20分)
1、假设已经有定义constchar*name=”chen”;
下列语句中错误的是_____________
A.name[3]=’q’
B.name=”lin”
D.name=newchar(‘q’)
2、在下列关键字中,用于说明类中公有成员的是____________
A.public
B.private
C.protected
D.friend
3、下列哪项不是面向对象程序设计的主要特征_______________。
A.封装
B.继承
D.多态
D.结构
4、构造函数是在__________时被执行的。
A.程序编译
B.创建对象 C.创建类
D.程序装入内存
5、在下面有关析构函数的描述中,正确的是____________
A.一个类中可以定义多个析构函数
B.析构函数的名字和类名完全相同
C.析构函数不能指定返回类型
D.析构函数可以有一个或多个参数
6、使用派生类的主要原因是_______________
A.提高代码的可充用性
B.提高程序的运行效率
C.加强类的封装性
D.实现数据的隐藏
7、下列的各函数中,___________不是类的成员函数.
A.构造函数
B.析构函数
C.友元函数
D.拷贝构造函数
8、关于虚函数,正确的描述是_______________
A.构造函数不能是虚函数
B.析构函数不能是虚函数
C.虚函数可以是友元函数
D.虚函数可以是静态成员函数
9、友元的作用之一是____________
A.提高程序的运用效率
B.加强类的封装性
C.实现数据的隐藏性
10、在下面有关静态成员函数的描述中,正确的是________________
A.在静态成员函数中可以使用this指针
B.在建立对象前,就可以为静态数据成员赋值
C.静态成员函数在类外定义时,要用static前缀
D.静态成员函数只能在类外定义
得
分
评卷人
二、判断题:
(每题1分,共10分)
(
)1、使用关键字class定义的类中缺省的访问权限是私有(private)的。
)2、构造函数和析构函数都不能重载。
)3、说明或定义对象时,类名前不需加关键字class。
)4、可以在类的构造函数中对静态数据成员进行初始化。
)5、protected和private区别在于protected成员可以被派生类访问,而private成员则不能被派生类访问。
)6、在C++中,封装是通过类实现的。
)7、无论何时编译器都为类构造一个无参数的缺省的构造函数。
)8、无论什么方式的继承,基类的私有成员都不能被派生
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学年 第一 学期 C+ 期末 复习题 网上