面向对象的程序设计第3阶段练习题答案 2022秋下半年江南大学限时机考考前复习资料_第1页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

第21页/共NUMPAGES\*ARABIC21页江南大学网络教育第三阶段练习题的参考答案选择为,在文档最后考试科目:《面向对象的程序设计》第章至第章(总分100分)__________学习中心(教学点)批次:层次:专业:学号:身份证号:姓名:得分:一单选题(共8题,总分值8分,下列选项中有且仅有一个选项符合题目要求,请在答题卡上正确填涂。)1.关于函数模板,描述错误的是()。(1分)A.函数模板必须由程序员实例化为可执行的函数模板B.函数模板的实例化由编辑器实现C.一个类定义中,只要有一个函数模板,则这个类是类模板D.类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化2.关于read()函数的下列描述中,()是正确的。(1分)A.该函数只能从键盘输入中获取字符串B.该函数只能用于文本文件的操作C.该函数只能按规定读取指定数目的字符D.从输入流中读取一行字符3.在ios类中提供的控制格式标志字中,()是转换为十六进制形式的标志常量。(1分)A.hexB.octC.decD.right4.进行文件输人操作时应包含()文件。(1分)A.ifstream.hB.fstream.hC.ofstream.hD.iostream.h5.关于异常的描述中,错误的是()。(1分)A.异常既可以被硬件引发,又可以被软件引发B.运行异常可以预料,但不能避免,它是由系统运行环境造成的C.异常是指从发生问题的代码区域传递到处理问题的代码区域的一个对象D.在程序运行中,一旦发生异常,程序立即中断运行6.假设有函数模板定义如下:template<typenameT>Max(Ta,Tb,T&c){c=a+b;}下列选项正确的是()。(1分)A.floatx,y;floatz;Max(x,y,z);B.intx;floaty,z;Max(x,y,z);C.intx,y;floatz;Max(x,y,z);D.floatx;doubley,z;Max(x,y,z);7.关于对getline()函数的下列描述中,()是错误的。(1分)A.该函数所使用的终止符只能是换行符B.该函数是从键盘上读取字符串的C.该函数所读取的字符串的长度是受限制的D.该函数读取字符串时遇到终止符便停止8.控制输出格各式的控制符中,()是设置输出宽度的。(1分)A.wsB.endsC.setfillD.setw()二多选题(共5题,总分值5分,下列选项中至少有2个或2个以上选项符合题目要求,请在答题卡上正确填涂。)9.在下列选项中()是ostream类的对象。(1分)A.cinB.cerrC.clogD.cout10.下面()语句以写的方式打开文件“myfile.dat”。(1分)A.ifstreaminfile("myfile.dat",ios::in);B.fstreaminfile("myfile.dat",ios::app);C.fstreaminfile("myfile.dat",ios::out);D.ofstreaminfile("myfile.dat");11.下面()是标准模板库中的主要组件。(1分)A.容器B.迭代器C.文件D.算法12.函数self(a,ios::adjustifiled)中a的值可以是()。(1分)A.ios::leftB.ios::rightC.ios::hecD.ios::oct13.处理异常用到3个保留字,除了try外,还有()。(1分)A.catchB.classC.throwD.return三判断题(共10题,总分值10分正确的填涂“A”,错误的填涂“B”。)14.在类模板的<模板参数表>中,必须至少有一个类参数。(1分)(

)15.try与catch总是结合使用的。(1分)(

)16.迭代器就是我们平时所用的指针。(1分)(

)17.以app方式打开文件时,当前指针定位于文件尾。(1分)(

)18.一个模板函数能够被相同函数名的另外模板函数重载。(1分)(

)19.一个异常只能在catch语句中再用throw语句抛出。(1分)(

)20.c++标准库中不需要异常类,因为C++标准库中很少发生异常。(1分)(

)21.流格式标志字的每一位表示一种格式,格式位之间互不影响。(1分)(

)22.抛出异常后一定要马上终止程序。(1分)(

)23.预定义的提取符和插入符都是可以重载的。(1分)(

)四名词解释题(共2题,总分值6分)24.模板函数(3分)25.函数模板(3分)五填空题(共14题,总分值14分)26.在C++的输人输出系统中,最核心的对象是_________________。执行输人和输出操作的类体系叫_________________(1分)27.C++支持两种模板,一种是_________________,另一种是_________________。(1分)28.<模板参数表中包含一个或多个用逗号分开的模板参数项=""每一项由保留字_________________或_________________开始=""1=""分="">29.运行异常,可以_________________,但不能_________________,它是由_________________造成的。(1分)30.异常接口声明也称为_________________,已经成为函数界面的一部分。(1分)31.如果某段程序中发现了自己不能处理的异常,就可以使用throw<表达式>抛掷这个异常,其中的<表达式>表示_________________。(1分)32.c++的异常处理机制使得异常的引发和处理_________________在同一函数中。(1分)33.C++中共有3种文件流,它们是_________________、_________________和_________________。(1分)34.函数模板实例化时,_________________普通传值参数的类型转换机制。(1分)35.C++的流类库预定义了4个流,它们是_________________、_________________、_________________、_________________(1分)36.C++的I/O流类库提供了2种控制格式输入/输出的方法。一种是用_________________,另一种是_________________。(1分)37.STL容器类库中包含7种基本容器。它们可以分成两组:_________________和_________________。(1分)38.为了使用异常类,需要包含相应的头文件。其中,异常基础类exception定义于_________________中,bad_alloc定义于_________________中,其他异常类定义于_________________(1分)39.如果打开文件失败,则流对象的值为_________________。(1分)六简答题(共2题,总分值10分)40.什么叫异常处理?(5分)41.分析说明C++语言的流类库中为什么要将ios类作为其派生类的虚基类?(5分)七综合题(共6题,总分值47分)42.定义一个分数类fraction,通过重载的运算符“<<”以分数形式输出分数的结果,如将三分之二输出为2/3。(7分)43.编写一个程序来统计文件file.txt的字符个数。(8分)44.从键盘输入x的值,计算y=ln(2x+1)的值,要求用异常处“负数求对数"的清况。(8分)45.用函数模板实现求整数、实数平方根的程序。(8分)46.#include<iostream>usingnamespacestd;classNomilk{public:Nomilk();Nomilk(inthow_many);intget_money();private:intcount;};intmain(){intmoney,milk;doubledpg;try{cout<<"Enternumberofmoney:";cin>>money;cout<<"Enternumberofglassesofmilk:";cin>>milk;if(milk<=0)throwNomilk(money);dpg=money/double(milk);cout<<money<<"yuan"<<endl<<milk<<"glassesofmilk."<<endl<<"Youhave"<<dpg<<"yuanforeachglassofmilk."<<endl;}catch(Nomilke){cout<<e.get_money()<<"yuan,andNoMilk!"<<endl<<"Gobuysomemilk."<<endl;}cout<<"Endofprogram."<<endl;return0;}Nomilk::Nomilk(){}Nomilk::Nomilk(inthow_many):count(how_many){}intNomilk::get_money(){returncount;}写出当分别输人42和40两组数后的输出结果。(8分)47.#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;outfile<<"Welcomeyoutooop!"<<endl;outfile.close();ifstreaminfile;infile.open("data.txt");if(!infile){cout<<"Can'topenthefile"<<endl;exit(1);}while(!infile.eof()){infile.getline(buf,80);cout<<buf<<endl;}infile.close();return0;}(8分)

一单选题(共8题,总分值8分,下列选项中有且仅有一个选项符合题目要求,请在答题卡上正确填涂。)1.参考答案选择为:A解析过程:函数模板的实例化是由编译系统在处理函数调用时自动完成的。2.参考答案选择为:C解析过程:read()函数的作用是从输入流中读取指定数目的字符串,它主要用于二进制文件的操作。3.参考答案选择为:A解析过程:4.参考答案选择为:B解析过程:5.参考答案选择为:D解析过程:在小型程序中,一发生异常,一般是将程序立即中断运行。对于大型程序来说,运行中一旦发生异常,应该允许恢复和继续运行。6.参考答案选择为:A解析过程:函数模板实例化时,实际参数类型替换模板参数。虽然这种参数替换具有类型检查功能,却没有普通传值参数的类型转换机制,所以程序运行时,B、C和D会出错。7.参考答案选择为:A解析过程:getline()函数的作用是从输人流中读取一行字符。函数要么在读取到指定个字符后终止,要么在读取到指定的终止符时终止。getline()函数使用的终止符可以是换行符,也可以是其他字符。8.参考答案选择为:D解析过程:二多选题(共5题,总分值5分,下列选项中至少有2个或2个以上选项符合题目要求,请在答题卡上正确填涂。)9.参考答案选择为:B,C,D解析过程:10.参考答案选择为:B,C,D解析过程:ios:app方式表示以追加方式打开文件,ios::out方式表示以写方式打开文件,如果用ofstream类来创建一个文件流对象,则隐含为输出流,所以B、C、D语句都是以写的方式打开文件“myfile.dat”。11.参考答案选择为:A,B,D解析过程:12.参考答案选择为:A,B解析过程:13.参考答案选择为:A,C解析过程:三判断题(共10题,总分值10分正确的填涂“A”,错误的填涂“B”。)14.参考答案选择为:T解析过程:15.参考答案选择为:T解析过程:16.参考答案选择为:F解析过程:迭代器并不仅仅是指针。指针可以指向内存中的一个地址,然后通过这个地址访问相应的内存单元;而迭代器更为抽象,它可以指向容器中的一个位置,然后就可以直接访问这个位置的元素。17.参考答案选择为:T解析过程:18.参考答案选择为:T解析过程:19.参考答案选择为:F解析过程:如果异常处理程序捕获到异常后,还无法完全确定异常的处理方式,这时才可能需要在catch语句中抛出该异常。20.参考答案选择为:F解析过程:c++标准库中仍需要异常类,因为这些异常类可以为程序设计人员,特别是自定义类库的开发人员提供一些经验。21.参考答案选择为:F解析过程:流格式标志字的每一位表示一种格式,格式位之间会有依赖关系。例如,dec、oct和hex在一个时刻只能有一个位被设置。22.参考答案选择为:F解析过程:抛出异常后并不是马上终止程序。当异常被抛出以后,catch处理程序按其在try块后出现的顺序被检查。如果没有找到合适的处理程序,则继续检查外层的try块。此处理持续到最外层封闭try块被检查完为止。如果匹配的处理程序未找到,则运行函数terminate()将被自动调用,从而终止程序。如果找到了一个匹配的catch处理程序,catch处理程序被执行,接下来程序跳转到所有catch块之后执行后续语句。23.参考答案选择为:T解析过程:四名词解释题(共2题,总分值6分)24.参考答案选择为:函数模板通过参数实例化构造出的具体函数称为模板函数。解析过程:25.参考答案选择为:带类属参数的函数称为函数模板。解析过程:五填空题(共14题,总分值14分)26.参考答案选择为:流,流类解析过程:27.参考答案选择为:函数模板,模板解析过程:28.参考答案选择为:class,typename解析过程:29.参考答案选择为:预料,避免,系统运行环境解析过程:30.参考答案选择为:抛出列表解析过程:31.参考答案选择为:异常类型解析过程:32.参考答案选择为:不必解析过程:33.参考答案选择为:输入文件流,输出文件流,输入输出文件流解析过程:34.参考答案选择为:没有解析过程:35.参考答案选择为:cin,cout,cerr,clog解析过程:36.参考答案选择为:ios类的成员函数,使用控制符解析过程:37.参考答案选择为:顺序容器,关联容器解析过程:38.参考答案选择为:<exception>,<new>,<stdexcept>解析过程:39.参考答案选择为:0解析过程:六简答题(共2题,总分值10分)40.参考答案选择为:异常处理是一种程序定义的错误,它对程序的逻辑错误进行设防,对运行异常加以控制。在C++中,异常处理是对所能预料的运行错误进行处理的一套实现机制。解析过程:41.参考答案选择为:从流类库的基本结构可以看到,ios类是istream类和ostream类的基类,从ios类公有派生istream和ostream两个类,而iostream类通过多重继承istream类和ostream类而产生的。如果不将ios类作为其派生类的虚基类,可能会产生二义性。解析过程:七综合题(共6题,总分值47分)42.参考答案选择为://xt81.cpp#

include<iostream.h>classFraction{public:Fraction(int

x=0,int

y=1);friend

ostream&

operator<<(ostream&,Fraction&);//重载运算符"<<"private:int

den;//分子int

num;//分母};Fraction::Fraction(int

x,int

y){den=

x;num=

y;}ostream&

operator<<(ostream&

os,Fraction&

fr){os<<fr.den<<'/'<<fr.num;

return

os;}int

main(){Fraction

fenshu(2,3);cout<<"fenshu="<<

fenshu<<

endl;return

0;}【输出结果】fenshu=

2/3解析过程:按重载插入符和提取符的规则重载运算符“<<”。43.参考答案选择为://方法1xt8_3_1.cpp#include<iostream>#include<fstream>usingnamespacestd;intmain(){intcount=0;ifstreaminfile("file.txt");//以输入方式打幵文件file.txtif(!infile){cout<<“Filecannotbeopened”<<endl;return0;}While(!infile.eof());//从文件file.txt中湊出数据{infile.get();count=count+1;}cout<<"文件有:"<<count<<"个字符"<<endl;infile.close();return0;}//方法2xt8_3_2.cpp#include<iostream>#include<fstream>usingnamespacestd;intmain(){intcount=0;streamposstart,end;ifstreaminfile("file.txt");//以输入方式打开文件file.txtif(!infile){cout<<"Filecannotbeopened."<<endl;return0;}infile.seekg(0,ios::beg);//将读指针定位到文件头start=infile.tellg();infile.seekg(0,ios::end);//将读指针定位到文件尾end=infile.tellg();cout<<"文件有:"<<end-start<<"个字符";infile.close();return0;}【输出结果】测试吋,file.txt的内容为“Thisisatest!!!”,此时输出结果如下:文件有:17个字符解析过程:方法1:文件在正确打开后,通过get()函数从头开始读出文件中的字符,每读出一个字符,计数器加1,直到文件尾为止。方法2:文件在正确打开后,通过seekg()函数移动读指针,并通过tellg()函数得到文件的头部和尾部位置,然后相减即可。44.参考答案选择为://xt9_1.cpp#include<iostream>#include<cmath>usingnamespacestd;classCln{public:Cln(doublex);doubleget_y();private:doubley;};intmain(){doublex,y,z;try{cout<<"Enteradoublenumber:";cin>>x;y=2*x+1;if(y<0)throwCln(y);z=log(y);cout<<"y=ln("<<2*x+1<<")="<<z<<endl;}catch(C1ne){cout<<e.get_y()<<":负数求对数"<<endl;}cout<<"Endofprogram."<<endl;return0;}Cln::Cln(doublex):y(x){}doubleCln::get_y(){returny;}【输出结果】Enteradoublenumber:2.2Y=ln(5.4)=1.6864Endofprogram.解析过程:按异常处理的语法组织程序。45.参考答案选择为://xt7_1.cpp#include<iost

温馨提示

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

评论

0/150

提交评论