【MOOC】C++程序设计(面向对象进阶)-北京邮电大学 中国大学慕课MOOC答案_第1页
【MOOC】C++程序设计(面向对象进阶)-北京邮电大学 中国大学慕课MOOC答案_第2页
【MOOC】C++程序设计(面向对象进阶)-北京邮电大学 中国大学慕课MOOC答案_第3页
【MOOC】C++程序设计(面向对象进阶)-北京邮电大学 中国大学慕课MOOC答案_第4页
【MOOC】C++程序设计(面向对象进阶)-北京邮电大学 中国大学慕课MOOC答案_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

【MOOC】C++程序设计(面向对象进阶)-北京邮电大学中国大学慕课MOOC答案2.3Quiz1、【单选题】哪种编程范式是C++11之后才支持的?本题答案:【函数式编程】3.3Quiz1、【多选题】受到C++语言重要影响的编程语言包括本题答案:【Java#C#】2、【判断题】自C++03标准开始的C++被称为现代C++本题答案:【错误】3.3Quiz1、【多选题】我们要使用最新版开发工具的原因包括:本题答案:【新版工具提供更友好的提示信息#新版工具提供更便捷的操作】作业1:测试你的C++编译器支持的标准第1单元测验1、【单选题】第一个被称为“ModernC++”的标准是?本题答案:【C++11】2、【单选题】集成开发环境中不一定包括本题答案:【图形界面设计工具】3、【单选题】集成开发环境的英文缩写是本题答案:【IDE】4、【多选题】C++11支持的编程范式包括本题答案:【结构化编程范式#函数式编程范式#OO编程范式#泛型编程范式】5、【多选题】如何学好C++?本题答案:【多编程#多调试解决程序BUG】6、【多选题】C++集成开发环境包括下面所列的哪些部分?本题答案:【编辑器#编译器#链接器】7、【多选题】集成开发环境中一般包含本题答案:【编辑器#编译器#链接器#调试器】8、【多选题】本课程讨论区不建议问下列哪些问题?本题答案:【cout.flush()函数的参数是什么?#如何安装VisualStudio2019?#谁能帮我编一段排序算法的代码?】9、【判断题】我们在C++学习过程中,选择开发工具应尽量选择简单的、问世时间比较久的工具。因为这样的工具易用且稳定。本题答案:【错误】10、【判断题】C语言支持面向对象编程范式本题答案:【错误】11、【填空题】编译器的英文是__________本题答案:【compiler】第1单元课前测试:C语言水平评估(英文题目;选做)1、【单选题】Thekeywordunsignedcanmodifythekeyword[]本题答案:【long】2、【单选题】Inthefollowingstrings,thecorrectCidentifieris[]本题答案:【_256】3、【单选题】Thestringr\tu\r\Okay?\\nwilloccupy[]bytesmemory.本题答案:【13】4、【单选题】Afterexecutingthefollowingstatements:inti=0;for(;++i=4;){};thevalueofvariableiis[]本题答案:【5】5、【单选题】Theoutputofthestatements:inta=3,b=4;printf(%d,(a=b?a:ab?b:a));is[]本题答案:【4】6、【单选题】Theoutputofthefollowingstatementsis[](ASCIIcodeof'a'is97)inta=98;charb=‘a’;printf(%c%d,(char)a,(int)b);本题答案:【b97】7、【单选题】InCprogramminglanguage,theresultofstatement5^4is[]本题答案:【1】8、【单选题】xisdivisibleby3butcan'tbedivisibleby5canbewrittenas[]本题答案:【!(x%3)!(x%5==0)】9、【单选题】Forthestatement:int*a[10],*b;thecorrectdescriptionis[]本题答案:【acanonlybervalue,butbcanbelvalue】10、【单选题】Thecorrectdescriptionaboutthefollowingprogramis[]#includestdio.hint*pPointer;intnNumber;voidf(){nNumber=25;pPointer=nNumber;}intmain(){f();printf(Valueof*pPointer:%d,*pPointer);return0;}本题答案:【noproblem】11、【单选题】IfcompiledwithaSTANDARDCCOMPILER(e.g.gcc),whichiscorrectaboutthefollowingfunctionadd?[]doubleadd(int*,int*,intk){return(double)(8+k);}intmain(){intx=1,y=2,z=3;add(x,y,z);return0;}本题答案:【Compileerror.Afterfillinginthenameoftheformalparameters,theprogramcanbecompiledwithouterrors;】12、【单选题】Thefollowingprogramsinitializeanarray.Thecorrectoneis:[]本题答案:【inta3[4]={3,2,1};】13、【单选题】Thecorrectoneaboutpointersis:[]Weassumethatallcodesarecompiledon32-bitplatform本题答案:【structT{doubled;}*p;wherepoccupies4bytesmemory;】14、【单选题】Thefollowingprogramcomputesthesummaryoftheintegersthatarelessthann.Thestatementsintheblankshouldbe[]intsum(unsignedintn){if(________){return1;}else{returnn+sum(n-1);}}本题答案:【1==n】15、【单选题】TherelationshipbetweenchararrayandC-stylestringis[]本题答案:【Ifastringisstoredinachararray,thesizeofthechararraymustbegreaterthanthelengthoftheC-stylestring.】16、【单选题】Giventhefollowingprogram,whendo-whileloopfinishes,thevalueofxis[]enum{APPLE,LEMON=6,ORANGE,BANANA=2,GRAPE};voidf(){intx=GRAPE;do{x++;}while((x-APPLE)=ORANGE);}本题答案:【8】17、【单选题】Whichofthefollowingstatementsarecompletelycorrect?[]本题答案:【intk,*p=k;scanf(%d,p);】18、【单选题】Theoutputofthefollowingprogramis[]inta=0,b=3;printf(%d%d,(a1),(b2));本题答案:【012】19、【单选题】Whichstatementsatisfiesthecondition:Ifstrings1equalstostringss2,thenexecuteST.[]本题答案:【if(strcmp(s2,s1)==0)ST;】20、【单选题】Giventhefollowingprogram#includestdio.hintfun(){staticintx=1;x+=1;returnx;}intmain(){inti,s=1;for(i=1;i=5;i++)s+=fun();printf(%d\n,s);return0}本题答案:【21】21、【判断题】Clanguageisastructuredprogramminglanguage.()本题答案:【正确】22、【判断题】InstandardC,intvariablecanbeusedascharvariable,andviceversa.()本题答案:【错误】23、【判断题】InstandardC,=isajudgmentofwhethertwonumbersareequal.()本题答案:【错误】24、【判断题】Inifstatement,thestatementbeforeelsemayomit;.()本题答案:【错误】25、【判断题】InClanguage,thereare3basicfileaccessmodes:read,writeandappend.()本题答案:【正确】26、【判断题】InClanguage,whendeclaringastructtype,youmustnotomitthekeywordstruct.()本题答案:【正确】27、【判断题】Thememoryaddressandthecontentsinthememoryareidentical.()本题答案:【错误】28、【判断题】InstandardC,localvariablesmustbedefinedbeforeanyotherstatementsinthefunctionbody.()本题答案:【正确】29、【判断题】InstandardC,allthefunctionsexceptmain()shouldbedeclaredbeforebeingcalled.()本题答案:【正确】30、【判断题】InstandardC,theindexofanarraymustbeaconstant,notanexpression()本题答案:【错误】3.1第2单元第1节:随堂测验1、【多选题】查资料,然后判断c++程序中的头文件扩展名包括以下:本题答案:【.h#.hpp#.hxx】2、【多选题】查资料,然后指出C++程序中源文件的扩展名包括以下:本题答案:【cpp#cxx#cc】3、【多选题】遵守编码规范有助于本题答案:【提升代码的可阅读性和可维护性#减少代码编写中的低级错误】1.3Quiz1、【单选题】以下代码写法哪个不符合工程规范?本题答案:【usingnamespacestd;】2、【判断题】名字空间可以限定一个标识符(identifier)的可见范围本题答案:【正确】21.第2单元第4节:随堂测验1、【判断题】编译过程中的Link阶段是对程序中的各种符号进行重新定位的过程本题答案:【正确】2、【填空题】C++程序编译的第一步是对源代码进行__________本题答案:【预处理##%_YZPRLFH_%##precompile】31.第2单元第5节:随堂测验1、【多选题】C++编程过程中的错误有以下几类:本题答案:【SyntaxError#LogicalError#RuntimeError】31.第2单元第6节:随堂测验1、【单选题】cin对象中,用于读取一个字符串的函数是本题答案:【get】2、【判断题】运算符“”被称为流提取运算符本题答案:【错误】第2单元作业1:在线编程-输入与输出第2单元作业2:在线编程-名字空间第2单元测验1、【单选题】关于C++的main()函数说法不正确的是本题答案:【必须得显式地写return语句返回一个整型值】2、【单选题】关于名字空间,说法正确的是本题答案:【程序员可以定义自己的名字空间】3、【单选题】关于编译预处理,说法正确的是本题答案:【#defineHELLO是定义了一个宏,名字叫HELLO】4、【单选题】inti=1;coutii++;上面的代码的输出是本题答案:【第二行代码是一句病式。最终结果依赖于两个i的取值次序。这是C++标准中未定义的行为。不同编译器会输出不同的结果。】5、【单选题】chara,b;cina;b=cin.get();从键盘上输入字符x然后回车,那么b中存放的是本题答案:【换行符】6、【单选题】cin对象中,以下说法错误的是本题答案:【也支持操作】7、【多选题】c++程序中的源文件扩展名包括以下:本题答案:【cpp#cxx】8、【多选题】遵守编码规范有助于本题答案:【提升代码的可阅读性和可维护性#提升程序开发小组协作的效率】9、【判断题】运算符原本的含义是左移运算符本题答案:【错误】10、【判断题】inta,b;cinab;输入12则a的值是2,b的值是1本题答案:【错误】11、【判断题】编译器能帮我们检查代码的逻辑错误本题答案:【错误】12、【填空题】C++程序的入口点是哪个函数?本题答案:【main】13、【填空题】用于输出语句中,代表标准输出的对象是本题答案:【cout】4.1随堂测验1、【单选题】对于语句intx=y,y=0;说法正确的是本题答案:【有语法错误】2、【单选题】char*p=newchar(32);对应的释放内存的语句是:本题答案:【deletep;】3、【单选题】char*a=newchar[32];对应的释放内存的语句是:本题答案:【delete[]a;】4、【判断题】引用在定义的时候就必须被初始化本题答案:【正确】5、【判断题】如果被调函数的形式参数是引用类型,那么对形式参数赋值,效果上相当于对实际参数进行赋值本题答案:【正确】6、【判断题】int*p=nullptr;int*q;在C++11中,第一行的代码写法要比第二行代码规范本题答案:【正确】1.3.Quiz:布尔数据类型1、【单选题】boolx=static_castbool('a');booly=(x!=true);x和y的值分别是什么?本题答案:【truefalse】3.3.Quiz:类型转换1、【判断题】coutstatic_castdouble(1/2);的输出是0.5本题答案:【错误】6第3单元第2节:随堂测验1、【单选题】boolx,y;//......此处代码对x和y进行初始化则表达式!(x!y)与下面哪个表达式等价?本题答案:【!x||y】2、【判断题】对于代码longintx{1.1};编译器不会报错。本题答案:【错误】3、【判断题】对于代码longintx(1.1);编译器不会报错本题答案:【正确】4、【判断题】表达式:static_castdouble(3)/2与表达式:static_castdouble(3/2)是等价的。本题答案:【错误】5、【填空题】boolx=12;则x的值为本题答案:【false】6、【填空题】boolx=12;则x的值为本题答案:【true】5.2第3单元第3节:随堂测验1、【单选题】对于以下代码autox{2.f};x的类型是本题答案:【float】2、【单选题】对于intconstx=3;autoy{x};autoz{x};则y和z的类型分别是本题答案:【int和constint】3、【判断题】对于autox='c';autop=x;p的类型是char*本题答案:【正确】1.4第3单元第4节:随堂测验1、【单选题】语句intx=108;中的108存放在哪个区域?本题答案:【常量区】2、【单选题】对于语句constchar*p=Hello;执行下面那条语句不会导致错误?本题答案:【p=World;】4.1.第3单元第5节:随堂测验1、【单选题】在32位编译器中,constintx=10;coutsizeof(x);的输出是:本题答案:【4】2、【单选题】对于已有代码chara[3],b[3];char*constp=a;合法的后续语句是:本题答案:【p[0]='a';】3、【多选题】对于已有代码:chara[3],b[3];charconst*p=a;合法的后续语句是本题答案:【p=b;#p=b+1;】4、【判断题】以下语句usingULInt=unsignedlongint;usingPULInt=ULInt*;在C++11中是正确的本题答案:【正确】7第3单元第6节:随堂测验1、【单选题】对于函数1voidf(inta,intb=1,intc=2){}与函数2voidf(intx,inty=3){}对于下面语句f(3,,1);来说,表述正确的是:本题答案:【编译器会对函数调用语句报错】2、【判断题】函数intmax(int,int);与函数unsignedmax(unsigned,unsigned);能够构成重载函数本题答案:【正确】3、【填空题】代码#includeiostreamautoi=1;intmain(){for(autoi=0;i5;i++){::i+=i;}std::cout::i;return0;}的输出结果是:本题答案:【11】4、【填空题】声明内联函数的关键字是本题答案:【inline】1.3.Quiz:基于范围的for1、【单选题】对于代码chars[]={'H','e','l','l','o'};autoi=0;for(charc:s){i++;}couti;的输出结果是本题答案:【5】2.1Quiz1、【单选题】以下关于带有初始化器的if语句用法不正确的是本题答案:【if(z==1;intz=1){//...}】2、【判断题】带有初始化器的switch语句switch(intx=0;x){//...}等价于{intx=0;switch(x){//...}}本题答案:【正确】第3单元作业1:在线编程-引用作为函数参数第3单元作业2:在线编程-重载函数第3单元测验1、【单选题】boolx,y;//......此处代码对x和y进行初始化则表达式!(x!y)与下面哪个表达式等价?本题答案:【!x||y】2、【单选题】给定函数1voidf(inta,intb=1,intc=2){}和函数2voidf(intx,inty=3){}对于下面语句f(3,,1);来说,表述正确的是:本题答案:【编译器会对函数调用语句报错】3、【单选题】char*a=newchar[32];对应的释放内存的语句,哪种写法最好?本题答案:【delete[]a;a=nullptr;】4、【单选题】下列代码正确的是本题答案:【autoa{10};decltype(a)y;】5、【多选题】对于语句intx=y,y{0};说法正确的是本题答案:【有语法错误#正确定义方法应该是inty{0},x{y};】6、【多选题】char*p=newchar(32);释放内存的语句是:本题答案:【delete[]p;#deletep;】7、【多选题】下列代码能累加数组元素的有本题答案:【intx[]{3,5,7};autosum{0};for(autoi:x)sum+=i;#intx[]{3,5,7};autosum{0};for(inti=0;i3;i++)sum+=*(x+i);】8、【多选题】对于已有代码chara[3]{'\0'},b[3]{'a'};char*constp=a;合法的后续语句是:本题答案:【p[0]='a';#b[0]=(*p)++;】9、【判断题】表达式:static_castdouble(3)/2与表达式:static_castdouble(3/2)是等价的。本题答案:【错误】10、【判断题】引用在定义的时候就必须被初始化本题答案:【正确】11、【判断题】autox[]{1,2,3};编译后,x的类型是int[]本题答案:【错误】12、【判断题】intp;p=NULL;在C++11中,这种代码写法是一种好的编程规范本题答案:【错误】13、【填空题】boolx=12;则x的值为本题答案:【false】14、【填空题】boolx=12;则x的值为本题答案:【true】15、【填空题】代码#includeiostreaminti=1;intmain(){for(inti=0;i5;i++){::i+=i;}std::cout::i;return0;}的输出结果是:本题答案:【11】16、【填空题】声明内联函数的关键字是本题答案:【inline】1.3Quiz-类的概念1、【多选题】面向对象的四个特征中,“P”和“I”分别代表本题答案:【Polymorphism#Inheritance】2、【判断题】面向对象的四个特征中“E”代表的是Encaption本题答案:【错误】3、【填空题】面向对象的英文怎么写?(用半角连字符连接两个英文单词)本题答案:【Object-Oriented】4、【填空题】面向对象的四个特征中,“A”的英文全称是:本题答案:【abstraction】2.4Quiz-创建对象并访问其成员1、【判断题】构造函数不能有返回值,所以构造函数名的前面必须加上关键字void本题答案:【错误】2、【判断题】类的数据成员也叫做实例变量本题答案:【错误】1.5Quiz对象拷贝和匿名对象1、【单选题】类Circle有一个无参构造函数,还有一个接收一个参数的构造函数,那么下面匿名对象相关的代码中,哪些是正确的?本题答案:【Circlec;c=Circle{};】2、【判断题】对象拷贝时,对象中的函数成员也进行一对一拷贝本题答案:【错误】2.4Quiz-声明与实现分离1、【判断题】存放类声明的头文件被包含多次,编译器可能会报告类重复声明的错误本题答案:【正确】2、【判断题】将类的声明放到.h文件中,将类的实现放到.cpp文件中,这两个文件的名字除了扩展名之外必须完全相同本题答案:【错误】3.4Quiz-避免头文件被多次包含1、【多选题】避免头文件被多次包含的编译预处理方法有H、includeonceI、C++11的_Pragma运算符本题答案:【#ifndefHEADER_FILE_NAME#defineHEADER_FILE_NAME//程序代码#endif##pragmaonce#C++11的_Pragma运算符】1.4Quiz1、【单选题】给定例子中的Circle类;则Circlec{},*p=c;Circlex{8.0},*q=x;则让c对象的半径也变成8.0的代码有:本题答案:【*p=x;】2.4Quiz1、【单选题】classCircle{};intmain(){Circle*p=newCircle[4];p++;}第5行代码要删除数组应该用:本题答案:【delete[](--p);】2、【判断题】intmain(){Circlec[]{1.0,2.0,3.0};}数组c是在堆区分配的内存本题答案:【错误】3.5Quiz1、【判断题】对于如下代码:classCircle{};voidf(Circlec);//main()Circlex{};f(x);第五行代码会导致对象拷贝本题答案:【正确】2、【判断题】对于下面的代码classCircle{};voidf(Circlec);//main()Circlex{};f(x);第五行代码会导致对象拷贝本题答案:【错误】2.4Quiz1、【多选题】关于this指针,说法正确的有本题答案:【this指针是自动初始化的#this指针指向调用当前函数的对象】2、【判断题】我们可以修改this指针的值,使之指向另外一个对象本题答案:【错误】3、【判断题】不管类的数据成员是public还是private属性,数据成员必须在函数成员前面声明。本题答案:【错误】1.4Quiz1、【判断题】C++11中,类数据成员初始化时可以使用如下形式:classX{intx(2);};本题答案:【错误】2、【判断题】C++11中,对象类型的成员不允许就地初始化本题答案:【错误】2.3Quiz1、【判断题】在构造函数的函数体种,还可以初始化类的数据成员本题答案:【错误】2、【判断题】构造函数的函数体执行之前,类中的数据成员必须完成初始化本题答案:【正确】3.4Quiz1、【多选题】以下哪些函数可以作为类Circle的默认构造函数?本题答案:【Circle::Circle();#Circle::Circle(doubler=1.0,charcolor='b');】2、【判断题】带有参数的构造函数不是默认构造函数本题答案:【错误】4.3Quiz1、【单选题】对于代码structX{intx{8};X():x{10}{x=42;}};Xc;则c.x的值是本题答案:【42】2、【判断题】如果类X的数据成员x既有就地初始化,也有构造函数初始化列表的初始化,那么就地初始化会被执行并且优先级最高。本题答案:【错误】4.1.在线编程-解析整数范围4.2.在线编程-【选做】解析有干扰字符的整数范围4.3.在线编程-遍历对象数组第4单元测验1、【单选题】对于如下代码:Circle*pCircle2=newCircle(5.9);释放内存的正确语句是:本题答案:【deletepCircle2;】2、【单选题】下面的代码输出结果是什么?strings{};s.append(ABCDEFG,3,2);couts;本题答案:【DE】3、【单选题】对于如下代码Circle*p=newCircle[3];正确释放内存的代码是:本题答案:【delete[]p;】4、【单选题】对于如下代码CirclecircleArray[3]={Circle(3),Circle(4)};没有调用Circle类的哪些构造函数?上述代码的编译环境是C++11或者C++14。注意:在C++17中引入了“复制消除”,会对本题的结果产生重要影响。本题答案:【Circle::Circle(Circle[])】5、【单选题】以下代码中,第几行有错误?classS{intx=7;intn(7);std::strings{Hello};inta[]={1,2,3};autob[]={1,2,3};public:S(){}};本题答案:【3,5,6】6、【单选题】关于C++11引入的std::array类,说法不正确的是本题答案:【std::array对象不能用基于范围的for循环遍历】7、【多选题】classHello的构造函数的原型可以写为本题答案:【inlineHello(inta);#Hello(char*p,charq,char[]);#Hello(inta=0);#Hello()=default;】8、【多选题】考虑如下代码,在编译器不做任何优化的情况下,Circlecircle1,circle2;circle1=Circle();circle2=Circle(5);中的匿名对象有本题答案:【Circle()#Circle(5)】9、【多选题】以下选项中,哪种方法可以将类中的函数成员声明为内联函数?本题答案:【classA{voidf(){//dosomething}};#inlinevoidA::f(){//dosomething}#classA{inlinevoidf();};voidA::f(){}】10、【多选题】对于如下代码Circlecircle1;Circle*pCircle=circle1;正确访问对象成员函数的方法是本题答案:【circle1.getArea();#(circle1)-getArea();】11、【多选题】下面这些代码的功能是创建一个string对象s,并将其内容设置为字符串alohaworld,正确的有:本题答案:【strings=string{alohaworld};#char*p=alohaworld;strings(p);#strings{'a','l','o','h','a','w','o','r','l','d'};】12、【判断题】构造函数必须带有参数本题答案:【错误】13、【判断题】下面的代码中Circlecircle1,circle2=circle1,*p=circle2;两个符号的含义是相同的。本题答案:【错误】14、【判断题】一般而言,函数里面定义的静态局部变量,在函数运行结束后仍然存在。本题答案:【正确】15、【判断题】使用this指针之前,程序员必须先声明this指针。本题答案:【错误】16、【判断题】类的所有对象中的“this”指针都是指向同一个地址的。本题答案:【错误】17、【判断题】一般情况下,使用对象作为函数的参数,要比使用对象的引用作为函数的参数,在运行时的开销要大本题答案:【正确】18、【填空题】struct中,如果不指明成员的访问控制属性,则默认的访问控制属性是(请填写C++关键字):本题答案:【public】19、【填空题】下面的代码输出结果是什么?strings1(HelloWorld);strings2(HelloKitty);cout(s1=s2);本题答案:【1】1.3随堂测验-C++11的编译期常量表达式constexpr1、【单选题】下面那个语句定义了编译期常量?本题答案:【constexprintm=3;】2、【判断题】constexpr修饰的表达式一定是编译期常量表达式本题答案:【错误】2.4随堂测验-断言与C++11的静态断言1、【判断题】assert()是一个函数本题答案:【错误】2、【判断题】static_assert是一个关键字本题答案:【正确】3、【判断题】assert()可以作为程序正常的逻辑控制代码本题答案:【错误】1.3Quiz-C++11的代理构造1、【判断题】以下代码对构造函数的调用从语法和语义上都是正确的:classC{intx;public:C(){C(10);}C(inti):x{i}{}};本题答案:【错误】2、【判断题】下面的代码表示代理(委托)构造函数的递归调用classC{public:C(){C();}C(inti){}};本题答案:【错误】2.4随堂测验-不可变对象1、【单选题】不可变类中不能有:本题答案:【setter函数】2、【判断题】一个类只要所有数据成员均为私有属性并且没有setter函数,就是一个不可变类本题答案:【错误】3.4Quiz-实例与静态成员1、【单选题】以下类的声明中有错误,请指出错误的代码行号classA{public:A(inta=0){x=a;}staticvoidf1(){x++;};private:intx;staticinty;};本题答案:【7】2、【判断题】类中的静态成员变量可以在类的构造函数中初始化。本题答案:【错误】3、【判断题】C语言程序中的static函数只能被包含该函数的源程序文件中的其他函数使用。本题答案:【正确】4、【判断题】类的静态数据成员的存在不依赖于任何类对象的存在本题答案:【正确】5、【判断题】classA{public:A(inta=0){x=a;}staticvoidf1(){};private:intx;staticinty;};intmain(){A::y=0;A::f1();return0;}上面的代码编译时会出现错误。本题答案:【正确】1.4随堂测验-析构函数1、【判断题】析构函数可以有返回值本题答案:【错误】2、【判断题】析构函数可以被重载本题答案:【错误】2.3随堂测验-友元函数1、【判断题】类的友元函数可以在类的外面声明本题答案:【错误】3.4随堂测验-拷贝构造函数1、【单选题】如下代码中,类的构造函数与拷贝构造函数的数量分别是classX{public:X();X(int);X(constX,int=1);};注意,这里所指的构造函数是狭义的构造函数,不包括拷贝构造函数。本题答案:【2,1】2、【多选题】拷贝构造函数的参数数量可以是本题答案:【1#2#多于2个】4.4随堂测验-深拷贝1、【判断题】deepcopy与shallowcopy的问题是由类中的指针类型成员引起的。本题答案:【正确】1.4Quiz-vector类1、【多选题】下列vector对象初始化语句正确的有本题答案:【//C++17std::vectorv{2,3,12};#std::vectorstd::stringsv{Hello,World};】2.3随堂测验-C++14的字符串字面量1、【单选题】下面代码输出的结果是:coutRHello(Hello)Hello;本题答案:【Hello】2、【判断题】下面代码编译并且执行后,v中存放着5个字符//C++17#includestring#includevectorusingnamespacestring_literals;intmain(){autos=Hellos;std::vectorv(s.begin(),s.end());}本题答案:【正确】1.4Quiz-用于数组的结构化绑定1、【单选题】关于结构化绑定,说法正确的有本题答案:【结构化绑定是一个声明语句】2、【判断题】用于原生数组的结构化绑定,声明的标识符数量可以少于数组元素的数量本题答案:【错误】2.4Quiz-用于对象数据成员的结构化绑定1、【单选题】下面代码空白处应该填入structS{inta{1};charc[2]{'a','b'};};intmain(){Ss;___________=s;}本题答案:【auto[x,y]】2、【判断题】下面的代码是否正确?classC{inta{0};intb{1};};intmain(){Cc;auto[x,y]{c};}本题答案:【错误】5.1.在线编程-代理构造函数15.2.在线编程-代理构造函数2第5单元测验1、【单选题】下面代码中,不正确使用代理构造的是本题答案:【structA{A():A{2}{}A(intx):A{static_castdouble(x)}{}A(doubled):A{}{}};】2、【单选题】以下类的声明中有错误,请指出错误的代码行号classA{public:A(inta=0){x=a;}staticvoidf1(){x++;};private:intx;staticinty;};本题答案:【7】3、【单选题】对于下面的代码,说法正确的是classA{public:A(inta=0){x=a;}staticvoidf1(){y++;};private:intx;staticinty;};intmain(){A::f1();return0;}本题答案:【link阶段报错】4、【单选题】析构函数说法正确的是本题答案:【析构函数在对象销毁时被自动调用】5、【单选题】关于类的友元函数说法正确的是本题答案:【友元函数必须在类内声明】6、【多选题】关于assert()和static_assert说法正确的有本题答案:【static_assert(bool_expression,message)断言只能用于编译期,且bool_expression必须是编译期常量表达式#static_assert和assert不能互换】7、【多选题】关于字符串字面量,下面哪些是正确的?H、includeiostreamI、includestringusingnamespacestd::string_literals;intmain(){constchar*s=RHello(Hello\nWorld)Hello;std::couts;}输出:Hello\nWorldK、includeiostreamL、includestringusingnamespacestd::string_literals;//main()..........std::strings1=Hello\0World;autos2=Hello\0Worlds;s1.size()的值是5s2.size()的值是11N、includeiostreamO、includestringusingnamespacestd::string_literals;//main()..........autos1=Hello\0Worlds;s1的类型是constchar*本题答案:【#includeiostream#includestringusingnamespacestd::string_literals;intmain(){constchar*s=R(Hello\nWorld);std::couts;}输出:Hello\nWorld##includeiostream#includestringusingnamespacestd::string_literals;intmain(){constchar*s=RHello(Hello\nWorld)Hello;std::couts;}输出:Hello\nWorld##includeiostream#includestringusingnamespacestd::string_literals;//main()..........std::strings1=Hello\0World;autos2=Hello\0Worlds;s1.size()的值是5s2.size()的值是11】8、【多选题】一个类成为immutableclass的必要条件包括本题答案:【所有数据域均设置为“私有”属性#没有更改器函数#没有能够返回可变数据域对象的引用或指针的访问器函数】9、【多选题】拷贝构造函数的参数数量可以是本题答案:【1#2#多于2个】10、【多选题】vector对象中可以保存的数据的类型包括本题答案:【int#char*#std::string#std::arrayint,10】11、【判断题】immutableobject一旦创建之后,就不能通过任何方法改变其内容本题答案:【错误】12、【判断题】类中的静态成员变量可以在类的构造函数中初始化。本题答案:【错误】13、【判断题】类的静态数据成员不依赖于任何类的对象而存在本题答案:【正确】14、【判断题】deepcopy与shallowcopy的问题是由类中的指针类型成员引起的。本题答案:【正确】15、【判断题】调用vector中的push_back()函数时,可能会导致当前vector对象重新申请内存并将已有的数据挪到新内存中本题答案:【正确】16、【填空题】声明编译期常量表达式的关键字是本题答案:【constexpr】17、【填空题】为了使得一个头文件只被包含一次,除了使用#ifndefFILENAME_H#defineFILENAME_H//Thecontentsoftheheaderfile#endifFILENAME_H这种方法之外,还可以使用语句本题答案:【pragma】1.4Quiz-继承1、【单选题】禁止一个类被其他类继承,可以使用的C++关键字或者标识符是本题答案:【final】2.4Quiz-C++11:继承中的构造函数1、【单选题】当程序员在派生类构造函数中显式调用基类构造函数时,应将被调用基类构造函数放在:本题答案:【派生类构造函数初始化列表中】2、【多选题】在C++11中,派生类不继承的特殊函数有本题答案:【析构函数#友元函数】3.4Quiz-继承中的默认构造函数1、【判断题】派生类构造函数必须调用基类构造函数。本题答案:【正确】4.4Quiz-构造链和析构链1、【单选题】类C继承类B,类B继承类A;那么,当C的对象c析构时,被调用的析构函数及调用次序是:本题答案:【~C(),~B(),~A()】1.3Quiz-继承中的名字隐藏1、【多选题】对于下面的代码structA{voidfoo(intx){};};structB:A{voidfoo(){};};intmain(){Bb;//通过对象b,调用基类的foo(int)函数;}想要完成第9行任务,该怎么办?本题答案:【在第九行写:b.A::foo(2);#在第五行前面插入:usingA::foo;然后在第九行写:b.foo(2);#在第九行写:static_castA(b).foo(2);】1.在线编程-继承中的构造函数2.在线编程-继承中的析构函数和静态成员3.在线编程-多态和纯虚函数第6单元测验1、【单选题】对于如下代码classB{public:voidf(){}voidg(){f();}}classD:publicB{public:voidf(){}voidg(){B::f()}}intmain(){Bb,*pb=b;Dd,*pd=d;b.f();pd-f();return0;}其中第14行代码和第15行代码分别调用的是本题答案:【B::f()与D::f()】2、【单选题】对于如下代码classB{public:voidf(){}voidg(){f();}}classD:publicB{public:voidf(){}voidg(){B::f()}}intmain(){Bb,*pb=b;Dd,*pd=d;d.g();pd-B::g();return0;}对第14行代码和第15行代码说法正确的是本题答案:【间接调用了B::f()间接调用了B::f()】3、【单选题】关于抽象类的正确说法是本题答案:【抽象类不可实例化】4、【单选题】类B是类A的派生类,对于代码Aa,*pa=a;Bb,*pb=b;下述说法正确的是本题答案:【pa=pb是Upcast】5、【多选题】派生类中不能继承基类中的本题答案:【友元函数#析构函数】6、【多选题】对于下面代码说法正确的有classA{public:A(intx){}};classB:publicA{public:B(){}};intmain(){Bb;}本题答案:【编译错误#在第三行代码后加上A()=default;就能编译通过#在第二行代码后加上A(){}就能编译通过#第七行改成B():A(0){}就能编译通过】7、【多选题】函数的override现象要求基类函数与派生类函数满足下面的条件本题答案:【函数名和函数返回值相同#函数参数个数、类型、次序相同#基类函数应为虚函数】8、【多选题】消除下述代码compile阶段语法错误的方式为classA{public:virtualintf()=0;};intmain(){Aa;(a)-f();}本题答案:【将第3行代码中的=0;改为{}#将第6行及第7行代码删除#将第3行代码中的=0去掉】9、【多选题】C++11中的final特殊标识符可以用来说明本题答案:【类不可被继承#成员函数不可被覆写】10、【判断题】派生类继承基类后,可以定义新的数据成员和函数成员本题答案:【正确】11、【判断题】类B继承类A,代码可以写作:classB:A{//Somedatafieldandfunction};B是以公有继承的方式继承了A中的成员本题答案:【错误】12、【判断题】基类的构造函数能够由派生类中的任何函数调用本题答案:【错误】13、【判断题】类A的析构函数在类外部定义时可以写为如下形式:~A::A(){//dosomething}本题答案:【错误】14、【判断题】构造函数和析构函数都是自动调用的,无法像普通成员函数一样通过对象显式调用。本题答案:【正确】15、【判断题】函数的overload是dynamicbinding本题答案:【错误】16、【判断题】C++实现运行时多态的必要条件是使用对象指针或者对象引用访问同名函数本题答案:【正确】17、【判断题】override特殊标识符要放到函数的返回值类型前本题答案:【错误】18、【判断题】override特殊标识符可以修饰基类函数本题答案:【错误】19、【填空题】根据本单元所讲,派生类与基类之间是________关系(请用课件中讲解的英文答题)本题答案:【isa##%_YZPRLFH_%##is-a】20、【填空题】在派生类中定义虚函数时,必须在函数名字前加上__________关键字本题答案:【virtual】21、【填空题】下面代码的横线上,要填入什么保留字,才能使得编译器报告该行出现错误?structB{virtualvoidfoo(){};};structD:publicB{voidfoo(inta)______;};voidD::foo(intx){return;}本题答案:【override】1.4Quiz-输入输出流类介绍1、【判断题】fstream类直接继承了ifstream类和ofstream类本题答案:【错误】2、【填空题】cin是_______类的对象(空白处填写类名)本题答案:【istream】2.4Quiz-向文件写数据1、【多选题】打开一个输出文件流的方法包括本题答案:【std::filesystem::pathp{out.txt};std::ofstreamoutput{p};#std::ofstreamoutput{out.txt};#std::filesystem::pathp{out.txt};std::ofstreamoutput{};output.open(p);】3.4Quiz-从文件读数据1、【单选题】用于判断是否成功打开文件流的函数是本题答案:【fail()】2、【判断题】创建ifstream对象时,给ifstream构造函数传递一个路径参数,构造函数会自动尝试打开这个文件流准备读取信息本题答案:【正确】1.4Quiz-格式化输出1、【单选题】coutstd::setprecision(4)std::fixed3.14;输出:本题答案:【3.1400】2、【判断题】setw()函数对其后的所有输出都有效本题答案:【错误】2.4Quiz-用于输入输出流的函数1、【判断题】默认情况下,getline函数使用换行符作为分隔符本题答案:【正确】1.4Quiz-文件打开模式1、【填空题】文件输出流代表追加模式的文件标志是std::ios::_______本题答案:【app】3.4Quiz-课件-二进制读写1、【多选题】用于二进制读写的I/O流函数包括本题答案:【read()#write()】2、【多选题】reinterpret_cast的主要用途是本题答案:【将指针转换为数值#在不同类型的指针之间进行转换】2.4Quiz-随机访问文件1、【单选题】文件scores.dat大小是100字节,用文件流fstream对象fst打开那么想要读最后一个字节,下面正确的是本题答案:【fst.seekg(-1L,std::ios::end);】7.1.互评作业-打开关闭文件并判断文件是否存在第7单元测验1、【单选题】使用cin对象获取用户输入时,当用户输入字符a然后敲回车键,cin的缓冲区中说法正确的是本题答案:【有字符a和换行符】2、【单选题】判断std::filesystem::path的对象p中保存的路径是否存在的语句是:本题答案:【exists(p);】3、【单选题】获取C:盘总容量的语句是:本题答案:【std::filesystem::pathp{R(C:\temp\hello\world)};std::filesystem::space(p).capacity;】4、【单选题】对于代码inta=10;floatb=10.001;coutsetw(4)abendl;coutsetfill('0')asetw(7)b;的输出结果是(答案中用下划线代替空格)本题答案:【__1010.00110010.001】5、【单选题】对于代码#includefstream#includeiostreamusingnamespacestd;intmain(){fstreamoutput(test.dat,ios::out|ios::binary);if(output.fail()){coutErroropeningtest.datendl;return-1;}output.write(123,3);output.close();return0;}以下说法正确的是本题答案:【test.dat文件中存储的是字符'1','2','3'的ASCII码注意:关于“ASCII码”的解释,参见/anASCIIcodeisthenumericalrepresentationofacharactersuchas'a'or'@'oranactionofsomesort.简单来说,ASCII码是字母在ASCII码表中对应的整数编号】6、【单选题】C++对于文件的读写操作,说法正确的是:本题答案:【文件的读写操作是从文件位置指示器所指向的位置开始】7、【多选题】C++中用于文件输入输出的头文件包括本题答案:【ifstream#ofstream#fstream】8、【多选题】关于cin和cout说法正确的有本题答案:【cin是一个istream类的对象#cout是一个ostream类的对象】9、【多选题】下列打开scores.txt文件方法正确的是本题答案:【ofstreamofs(c:\\scores.txt);#ofstreamofs;ofs.open(Rhello(c:\scores.txt)hello);】10、【多选题】关于流插入运算符在写文件时说法正确的有本题答案:【流插入运算符可以自动识别紧跟其后的参数的数据类型并进行自动转换#在文件输出操作中,流插入运算符可以与setw()等格式控制函数一同使用】11、【多选题】对于代码片段:#includefstream#includeiostreamusingnamespacestd;intmain(){fstreambinaryio;//Createstreamobject//Readarrayfromthefilebinaryio.open(array.dat,ios::in|ios::binary);charresult[10]={'\0'};binaryio.read(reinterpret_castchar*(result),20);coutresult;return0;}其中array.dat文件中存放的内容以字节序列表示,各字节的值为0x30,0x31,...,0x60执行之后可能出现的状况有:本题答案:【屏幕上输出了10个以上字符,程序结束,未报告错误#屏幕上输出了10个以上字符,程序出错】12、【多选题】C++中,与文件输入输出的流类有本题答案:【fstream#ifstream#ofstream】13、【判断题】ifstream类与ofstream类中均有一个filebuf类型的对象成员本题答案:【正确】14、【判断题】cin.get()一次只能读入一个字符本题答案:【正确】15、【判断题】setprecision()函数对于整数的显示没有影响本题答案:【正确】16、【判断题】在使用流提取运算符读取文本文件的内容时,数据之间可以使用制表符作为分隔。本题答案:【正确】17、【判断题】将一个POD布局的对象以二进制的形式写入到文件中,则文件中保存的实际上是对象中的数据域成员本题答案:【正确】18、【判断题】调用文件流类中的get()函数读文件内容,文件位置指示器会向文件尾部移动一个整数的位置本题答案:【错误】19、【判断题】seekp()和seekg()既可以将文件位置指示器向文件头部移动,也可以向文件尾部移动本题答案:【正确】20、【判断题】C++文件流中,用tellg()或者tellp()函数移动文件位置指示器(或者文件指针)本题答案:【错误】21、【填空题】用于从文件中读取数据的类的名字是__________本题答案:【ifstream】22、【填空题】对于代码std::stringfilename{hello.txt};ifstreamifs{filename};std::coutifs.fail();若hello.txt文件不存在,该代码输出本题答案:【1】23、【填空题】对于代码fstream(test.dat,ios::out|ios::binary);intx=654321;char*p=__________________;fs.write(p,sizeof(int));空白处应填写什么表达式?(请不要加空格等无效字符)本题答案:【reinterpret_cast(&x)】1.4Quiz-运算符与函数1、【单选题】两个string对象能够相加的原因是本题答案:【string类中重载了+运算符】3.3Quiz-C++运算符函数1、【判断题】重载运算符时,其参数应尽量避免使用引用类型本题答案:【错误】1.5Quiz1、【判断题】对于+-*/这四个运算符而言,一般情况下,重载这四个运算符后,运算符函数的返回值类型可以是左值引用类型本题答案:【错误】2、【判断题】对于+-*/这四个运算符而言,一般情况下,重载这四个运算符时,运算符函数的参数类型可以是引用类型。但是这个引用类型最好用const修饰。本题答案:【正确】2.4Quiz1、【单选题】下面哪个对类C中的+=运算符的重载是最合适的?本题答案:【CC::operator+=(constCc);】2.4Quiz1、【判断题】负号运算符函数可以返回一个引用类型本题答案:【错误】3.2.2Quiz1、【单选题】正确的输出结果是本题答案:【v1(3,4)】1.4Quiz1、【判断题】流操作运算符不能重载为类的成员函数,否则,在调用的时候参数次序就与我们的系贯是相反的本题答案:【正确】2.4Quiz1、【判断题】重载的类型转换运算符函数没有返回值本题答案:【正确】8.1在线编程-关系运算符重载8.2在线编程-数组下标运算符重载第8单元测验1、【单选题】++运算符的两种不同重载方式的目的是:本题答案:【区别前置++和后置++】2、【单选题】将运算符重载为类Vec2D的成员函数后,则将Vec2D的对象r1和r2输出到屏幕上的代码的正确写法是:本题答案:【r1cout;r2cout;】3、【单选题】关于Vec2D类中重载的+运算符,对于代码Vec2Dr1,r2;//initializer1,r2;coutr1+r2;说法正确的是本题答案:【通过对象r1调用了重载的+运算符】4、【单选题】对于代码Vec2Dv1(1,3);Vec2Dv2=v1;说法错误的是本题答案:【调用了Vec2D的赋值运算符函数】5、【多选题】以下关于this指针说法正确的是本题答案:【使用this指针时,this指向当前对象#this指针不需要程序员显式定义#this是c++关键字】6、【多选题】如下代码正常编译并可正确运行,则仅仅通过阅读下面的代码,我们可以推测出:#includestringintmain(){strings{Hello};s[2]='a';return0;}本题答案:【string类中对[]运算符进行了重载#string的一个构造函数接收字符指针作为其参数#重载的[]运算符返回的是一个引用类型的数据(或者对象)】7、【多选题】下面说法错误的有本题答案:【对于二元运算符,重载之后,在使用时,运算符的两个参数必须都是用户自定义的类#如果一个函数返回值类型是引用,那么该函数是一个将亡值#将亡值是将左值转换为右值引用】8、【多选题】不能重载的运算符有本题答案:【::运算符#?:三元运算符】9、【多选题】对于下面类C,空白处要填写一个运算符重载的函数原型,正确的有:classC{private:intx{0};inty{0};public:C()=default;_________________}本题答案:【Coperator++(intdummy);#Coperator-();】10、【判断题】=运算符可以被重载本题答案:【正确】11、【判断题】++运算符可以被重载为友元函数本题答案:【正确】12、【判断题】重载后置++/--运算符时,参数参加相关运算本题答案:【错误】13、【判断题】从C++语法角度看,将或者重载为成员函数是可以的。本题答案:【正确】14、【填空题】运算符重载的本质是__________本题答案:【函数重载】15、【填空题】重载Vec2D类的赋值运算符时,赋值运算符函数的返回值类型应该是(请以代码形式描述,不要用文字描述)本题答案:【Vec2D&##%_YZPRLFH_%##Vec2D&】1.在线编程-创建复数类,重载流运算符2.在线编程-修改复数类,重载加减法运算符3.在线编程-在复数的运算中,练习异常处理第9单元测验1、【单选题】下述代码中,statement应该如何写才能使得程序输出1intt=1;try{......throwt;......}catch(statement){couti;}本题答案:【inti】2、【单选题】当使用参数将被调函数中的错误信息返回给主调函数时,被调函数的参数类型可以是:本题答案:【int*】3、【单选题】程序如果出现了一个整数溢出错误,则应该抛出的异常是本题答案:【runtime_error】4、【单选题】exception类中有哪个函数?本题答案:【what()】5、【单选题】一个try块在执行时一次能够抛出几个异常?本题答案:【不多于一个】6、【单选题】关于重新抛出异常的说法不正确的是本题答案:【重新抛出异常的throw语句可以放在try{}块中】7、【多选题】如下代码中,statement语句在语法和逻辑上都正确的是try{if(number2==0)thrownumber1;......}catch(statement){couteendl;}本题答案:【inte#inte#constinte】8、【多选题】在被调函数中,如何将发生的错误告知主调函数?本题答案:【可以使用被调函数返回值#可以使用被调函数的参数】9、【多选题】关于自定义异常类说法正确的是本题答案:【自定义异常类的构造函数可以有参数#从C++自带异常类继承来的自定义异常类通过调用其基类构造函数,可以将异常状况的描述信息保留下来留待异常处理程序使用】10、【多选题】以下代码中,符合编码规范的有本题答案:【intnPersons;#stringmovieNo;】11、【多选题】关于异常处理的流程,以下说法正确的是本题答案:【如果某个try块中有throw语句,那么执行throw语句后,该try块中throw语句之后的

温馨提示

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

评论

0/150

提交评论