面向对象的程序设计第三阶段练习Word文档格式.docx
《面向对象的程序设计第三阶段练习Word文档格式.docx》由会员分享,可在线阅读,更多相关《面向对象的程序设计第三阶段练习Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
2.catch(·
·
)一般放在其他catch子句的后面,该子句的作用是(B)。
A.抛掷异常
B.捕获所有类型的异常
C.检测并处理异常
D.有语法错误
3.建立类模板对象的实例化过程为(C)。
A.基类-->派生类
B.构造函数-->对象
C.模板类-->对象
D.模板类-->模板函数
4.下列输出字符'
A’的方法中,(B)是错误的。
A.cout<<'
A'
;
B.cout<<put('
);
C.cout.put('
D.char='
;
cout<<a;
5.使用控制符进行格式输出时,应包含(C)文件。
A.iostream.h
B.math.h
C.iomanip.h
D.fstream.h
6.下列选项中,用于清除基数格式位设置以八进制输出的语句是(C)。
A.cout<<setf(ios:
:
dec,ios:
basefield);
B.cout<<setf(ios:
hex,ios:
C.cout<<setf(ios:
oct,ios:
basefield);
D.cin>>setf(ios:
hex,ios:
7.假定已定义整型变量data,以二进制方式把data的值写人输出文件流对象outfile中去,正确的语句是(C)。
A.outfile.write((int*)&
data,sizeof(int));
B.outfile.write((int*)&
data,data);
C.outfile.write((char*)&
data,sizeof(int));
D.outfile.write((char*)&
8.下列类中(A)不是输入输出流类iostream的基类。
A.fstream
B.istream
C.ostream
D.ios
二多选题(共4题,总分值12分,下列选项中至少有2个或2个以上选项符合题目要求,请在答题卡上正确填涂。
9.下列的模板说明中,正确的是(AC)。
(3分)
A.template<typenameT1,typenameT2>
B.template<classT1,T2>
C.template(classT1,classT2)
D.template(typenameT1,T2)
10.下面(ABC)语句能把“Hello,students”赋值给一个字符数组string[50]。
A.cin>>string;
B.cin.getline(string,80);
C.cin.get(string,40,'
\n'
D.cin.get(string);
11.下列说法中错误的是(CD)。
A.引发异常后,首先在引发异常的函数内部寻找异常处理过程
B.抛出异常是没有任何危险的
C.“抛出异常”和“捕捉异常”两种操作最好放在同一个函数中
D.异常处理过程在处理完异常后,可以通过带有参数的throw继续传播异常
12.下面(ABD)是标准模板库中的主要组件。
A.容器
B.迭代器
C.文件
D.算法
三名词解释题(共2题,总分值4分)
13.模板类(2分)
14.类模板(2分)
四填空题(共15题,总分值30分)
15.使用文件流类库的程序必须用#include编译指令将头文件_fstream.H__包含进来。
(2分)
16.在小型程序开发中,一旦发生异常所采取的方法一般是_________________。
17.最好用istream的函数和ostream的函数_________________、_________________分别来读/写二进制文件。
18.当实际进行I/O操作时,cin与____标准输入_____________设备相关联。
19.下列格式控制符,在iostream.h中定义的是_________________、_________________,在iomanip.h中定义的是_________________、_________________。
20.STL迭代器主要包括5种基本类别:
_________________、_________________、_________________、_________________和_________________。
21.如果预料某段程序(或对某个函数的调用)有可能发生异常,就将它放在
_________________中。
22.按数据的存取方式来分类,文件可分为_________________和_________________。
23.STL提供的容器是常用数据结构的_________________。
24.打开文件就是使一个文件流对象与_________________相关联。
25.在异常处理程序中发现异常,可以在_________________语句中再用throw语句抛出。
26.如果异常类型声明是一个省略号(·
),catch子句便处理_________________类型的异常,这段处理程序必须是catch块的最后一段处理程序。
27.函数原型的抛出列表是一个空表,表示该函数
_________________任何类型的异常。
28.重载函数模板便于定义_________________或者函数参数的类型、个数不相同所进行的_________________操作。
29.关键字_________________是定义模板的关键字。
五判断题(共10题,总分值10分正确的填涂“A”,错误的填涂“B”。
30.如果异常处理程序捕获到异常后,必须马上处理。
(1分)(
B
31.read()函数只能用于文本文件的操作中。
32.异常接口定义的异常参数表为空,表示可以引发任何类型的异常。
33.迭代器就是我们平时所用的指针。
34.一个异常可以是除类以外的任何类型。
35.函数write()是用来将一个字符串送到一种输出流中,但必须将一个字符串全部的字符都送到输出流中。
36.作为模板类型参数的关键字class,特别含义是“任何用户定义类的类型”。
37.在类模板的<模板参数表>中,可以使用函数类型参数,该参数与普通函数参数的用法和功效完全相同。
38.控制符本身是一种对象,它可以直接被提取符或插入符操作。
(1分)(A
39.当catch子句的异常类型声明参数被初始化后,将从对应的try块开始到异常被抛
掷处之间构造(且尚未析构)的所有自动对象进行析构。
六综合题(共6题,总分值30分)
40.设计一个类模板,然后将该类模板实例化为整数型和字符型类。
利用类模板的成员函数为其数据成员赋值,并显示所赋给的值。
(5分)
41.#include<iostream>
#include<fstream>
usingnamespacestd;
intmain()
{
charbuf[80];
ofstreamoutfile;
outfile.open("
data.txt"
if(!
outfile)
cout<<"
Can'
topenthefile"
<endl;
exit
(1);
}
outfile<<"
Hello,students!
"
<<endl;
Welcomeyoutooop!
outfile.close();
ifstreaminfile;
infile.open("
data.txt"
infile)
<<endl;
while(!
infile.eof())
infile.getline(buf,80);
cout<<buf<<endl;
infile.close();
return0;
}(5分)
42.编写一个程序来统计文件file.txt的字符个数。
43.#include<iostream>
usingnamespacestd;
classNomilk
public:
Nomilk();
Nomilk(inthow_many);
intget_money();
private:
intcount;
};
intmoney,milk;
doubledpg;
try
Enternumberofmoney:
cin>>money;
Enternumberofglassesofmilk:
cin>>milk;
if(milk<=0)
throwNomilk(money);
dpg=money/double(milk);
cout<<money<<"
yuan"
<<endl
<<milk<<"
glassesofmilk."
<<"
Youhave"
<<dpg
yuanforeachglassofmilk."
<<endl;
catch(Nomilke)
cout<<e.get_money()<<"
yuan,andNoMilk!
Gobuysomemilk."
<<endl;
Endofprogram."
return0;
Nomilk:
Nomilk()
{}
Nomilk(inthow_many):
count(how_many)
intNomilk:
get_money()
returncount;
写出当分别输人42和40两组数后的输出结果。
44.从键盘输入x的值,计算y=ln(2x+1)的值,要求用异常处“负数求对数"
的清况。
45.按一行一行的方法将一个文本文件复制到另一个文件中。
七简答题(共2题,总分值6分)
46.C++的异常处理机制有何优点?
47.文本文件与二进制文件有什么区别?
并说明在什么情况下应该使用文本文件,在什么情况下使用二进制文件?