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

付费下载

下载本文档

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

文档简介

【期末】《C++程序设计(面向对象进阶)》(北京邮电大学)期末考试慕课答案

有些题目顺序不一致,下载后按键盘ctrl+F进行搜索期末考试1.单选题:以下类模板成员函数定义正确的是:

选项:

A、templateautoMyClass::foo(){std::cout<<"AlohaWorld!"<

B、templateautoMyClass::foo(Tt){std::cout<<t<<std::endl;}

C、voidMyClass::foo(Tt){std::cout<<t<<std::endl;}

D、templateSMyClass::foo(Tt,Ss){s=static_cast(t);std::cout<<s<<std::endl;returns;}

答案:【templateautoMyClass::foo(Tt){std::cout<<t<<std::endl;}】2.单选题:关于重新抛出异常的说法不正确的是

选项:

A、当catch语句无法处理它所捕获的异常时,它可以将该异常重新抛出

B、catch所在的函数想要通知它的调用者发生了一个异常时,该catch块中可以将捕获到的异常重新抛出

C、重新抛出异常的throw语句可以放在try{}块中

D、重新抛出异常的throw语句需要放在catch{}块中

答案:【重新抛出异常的throw语句可以放在try{}块中】3.单选题:关于结构化绑定,说法正确的有

选项:

A、结构化绑定是一个声明语句

B、结构化绑定可以将已有的一些变量绑定到初始化器的子对象或者元素上

C、结构化绑定可以指定待绑定变量的类型,比如int等

D、结构化绑定中auto不能与引用类型符联合使用

答案:【结构化绑定是一个声明语句】4.单选题:带有默认类型参数的模板,其默认类型参数说法正确的是

选项:

A、默认类型参数可以是字面量

B、默认类型参数必须放在所有参数的最右侧

C、默认类型参数可以任意放置

D、实例化模板时,默认类型参数也需要显式写出来

答案:【默认类型参数必须放在所有参数的最右侧】5.单选题:对于代码Vec2Dv1(1,3);Vec2Dv2=v1;说法错误的是

选项:

A、调用了Vec2D的有参构造函数

B、调用了Vec2D的赋值运算符函数

C、调用了Vec2D的拷贝构造函数

D、对象v1和v2所在内存位置不同,但是他们的值是相同的

答案:【调用了Vec2D的赋值运算符函数】6.单选题:对于代码#include#includeusingnamespacestd;intmain(){fstreamoutput("test.dat",ios::out|ios::binary);if(output.fail()){cout<<"Erroropeningtest.dat"<<endl;return-1;}output.write("123",3);output.close();return0;}以下说法正确的是

选项:

A、test.dat文件中存储的是123这个整数

B、test.dat文件中存储的是字符'1','2','3'的ASCII码注意:关于“ASCII码”的解释,参见/anASCIIcodeisthenumericalrepresentationofacharactersuchas'a'or'@'oranactionofsomesort.简单来说,ASCII码是字母在ASCII码表中对应的整数编号

C、test.dat文件的大小为4个字节

D、test.dat文件为空

答案:【test.dat文件中存储的是字符'1','2','3'的ASCII码注意:关于“ASCII码”的解释,参见/anASCIIcodeisthenumericalrepresentationofacharactersuchas'a'or'@'oranactionofsomesort.简单来说,ASCII码是字母在ASCII码表中对应的整数编号】7.单选题:文件scores.dat大小是100字节,用文件流fstream对象fst打开那么想要读最后一个字节,下面正确的是

选项:

A、fst.seekg(100L);

B、fst.seekp(100L);

C、fst.seekg(-1L,std::ios::end);

D、fst.seekg(50L,std::ios::cur);

答案:【fst.seekg(-1L,std::ios::end);】8.单选题:析构函数说法正确的是

选项:

A、析构函数可以有参数

B、析构函数可以重载

C、析构函数可以有返回值

D、析构函数在对象销毁时被自动调用

答案:【析构函数在对象销毁时被自动调用】9.单选题:下面的代码输出结果是什么?strings{""};s.append("ABCDEFG",3,2);cout<<s;

选项:

A、BC

B、CD

C、DE

D、EF

答案:【DE】10.单选题:classCircle{};intmain(){Circle*p=newCircle[4];p++;}第5行代码要删除数组应该用:

选项:

A、delete[]p;

B、delete[]Circle;

C、delete[](p--);

D、delete[](--p);

答案:【delete[](--p);】11.单选题:C++实现元编程和泛型编程的方法分别是

选项:

A、模板,模板

B、元编程,模板

C、多态,元编程

D、模板,元编程

答案:【模板,元编程】12.单选题:exception类中有哪个函数?

选项:

A、which()

B、what()

C、when()

D、where()

答案:【what()】13.单选题:将<<运算符重载为类Vec2D的成员函数后,则将Vec2D的对象r1和r2输出到屏幕上的代码的正确写法是:

选项:

A、cout<<r1<<r2;

B、r1<<r2<<cout;

C、cout<<r1;cout<<r2;

D、r1<<cout;r2<<cout;

答案:【r1<<cout;r2<<cout;】14.单选题:下面哪个对类C中的+=运算符的重载是最合适的?

选项:

A、C&C::operator+=(constC&c);

B、CC::operator+=(constC&c);

C、C&C::operator+=(Cc);

D、CC::operator+=(constCc);

答案:【C&C::operator+=(constC&c);】15.单选题:使用cin对象获取用户输入时,当用户输入字符a然后敲回车键,cin的缓冲区中说法正确的是

选项:

A、只有字符a

B、只有回车符

C、有字符a和回车符

D、有字符a和换行符

答案:【有字符a和换行符】16.单选题:对于如下代码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行代码说法正确的是

选项:

A、间接调用了D::f()直接调用了D::g()

B、间接调用了B::f()间接调用了B::f()

C、间接调用了D::f()间接调用了B::f()

D、直接调用了D::g()间接调用了B::g()

答案:【间接调用了B::f()间接调用了B::f()】17.单选题:类C继承类B,类B继承类A;那么,当C的对象c析构时,被调用的析构函数及调用次序是:

选项:

A、~B()

B、~A(),~B(),~C()

C、~C(),~B(),~A()

D、~C()

答案:【~C(),~B(),~A()】18.单选题:下面代码空白处应该填入structS{inta{1};charc[2]{'a','b'};};intmain(){Ss;___________=s;}

选项:

A、auto[x]

B、auto&[x,y]

C、auto&[x,y,z]

D、auto[x,y[]]

答案:【auto&[x,y]】19.单选题:对于以下代码,编译器会生成几个函数模板的实例?templateintcomp(Ss,Tt){//dosomethingreturn0;}intmain(){comp(1,8);comp(1.0,8);comp("Hello","World");comp(1.0,8.0);comp(4.0,2);}

选项:

A、1

B、2

C、3

D、4

答案:【4】20.单选题:对于选择排序算法的函数原型,可以写作:

选项:

A、templatevoidselectionSort(Slist[],intarraySize){//dosomething}

B、templatevoidselectionSort(Slist[],intarraySize){//dosomething}

C、templateSselectionSort(intlist[]){//dosomething}

D、templatevoidselectionSort(intlist[],SarraySize){//dosomething}

答案:【templatevoidselectionSort(Slist[],intarraySize){//dosomething}】21.单选题:一个try块在执行时一次能够抛出几个异常?

选项:

A、只有一个

B、不多于一个

C、两个或者两个以上

D、一个或者一个以上

答案:【不多于一个】22.单选题:++运算符的两种不同重载方式的目的是:

选项:

A、使得运算结果不同

B、使得程序员用起来更方便

C、区别前置++和后置++

D、C++他爹非常喜欢++运算符,不然也不会叫C++

答案:【区别前置++和后置++】23.单选题:正确的输出结果是

选项:

A、v1:(2,3)

B、v1(3,4)

C、v3(2,3)

D、v3(3,4)

答案:【v1(3,4)】24.单选题:两个string对象能够相加的原因是

选项:

A、string类型与int类型相似,本质上可以执行加法运算

B、string类中重载了+运算符

C、+运算符本身能够对字符进行运算

D、C++标准中对+运算符做了特殊规定,所以可以对string对象执行相应操作

答案:【string类中重载了+运算符】25.单选题:C++对于文件的读写操作,说法正确的是:

选项:

A、文件的读写操作是从文件位置指示器所指向的位置开始

B、文件的读写操作都是从文件头开始的

C、从文件中读写数据之后,文件位置指示器可能会向前移动或者向后移动

D、读文件操作到文件末尾时,再继续读文件内容,文件位置指示器也会发生改变

答案:【文件的读写操作是从文件位置指示器所指向的位置开始】26.单选题:判断std::filesystem::path的对象p中保存的路径是否存在的语句是:

选项:

A、exists(p);

B、p.exists();

C、p.empty();

D、empty(p);

答案:【exists(p);】27.单选题:boolx,y;//......此处代码对x和y进行初始化则表达式!(x&&!y)与下面哪个表达式等价?

选项:

A、!x&&!y

B、!x||!y

C、!x&&y

D、!x||y

答案:【!x||y】28.单选题:对于代码chars[]={'H','e','l','l','o'};autoi=0;for(charc:s){i++;}cout<<i;的输出结果是

选项:

A、0

B、4

C、5

D、6

答案:【5】29.单选题:对于函数1voidf(inta,intb=1,intc=2){}与函数2voidf(intx,inty=3){}对于下面语句f(3,,1);来说,表述正确的是:

选项:

A、调用的是函数1

B、调用的是函数2

C、定义一个新的重载函数

D、编译器会对函数调用语句报错

答案:【编译器会对函数调用语句报错】30.单选题:boolx,y;//......此处代码对x和y进行初始化则表达式!(x&&!y)与下面哪个表达式等价?

选项:

A、!x&&!y

B、!x||!y

C、!x&&y

D、!x||y

答案:【!x||y】31.单选题:关于名字空间,说法正确的是

选项:

A、C语言也有名字空间

B、名字空间不能嵌套声明

C、名字空间可以用for作为名字

D、程序员可以定义自己的名字空间

答案:【程序员可以定义自己的名字空间】32.单选题:Giventhefollowingprogram#includeintfun(){staticintx=1;x+=1;returnx;}intmain(){inti,s=1;for(i=1;i<=5;i++)s+=fun();printf("%d\n",s);return0}

选项:

A、11

B、21

C、6

D、120

答案:【21】33.单选题:Thecorrectdescriptionaboutthefollowingprogramis[]#includeint*pPointer;intnNumber;voidf(){nNumber=25;pPointer=&nNumber;}intmain(){f();printf("Valueof*pPointer:%d",*pPointer);return0;}

选项:

A、thetypesofpointersdonotmatch

B、therearememoryleaks

C、thereis"hanging-up"pointer

D、noproblem

答案:【noproblem】34.单选题:"xisdivisibleby3butcan'tbedivisibleby5"canbewrittenas[]

选项:

A、x%3||x%5

B、x%3==0||x%5!=0

C、!(x%3)&&!(x%5==0)

D、(x%3)&&!(x%5!=0)

答案:【!(x%3)&&!(x%5==0)】35.单选题:cin对象中,以下说法错误的是

选项:

A、getline()函数可以读入一行字符串

B、get()的重载函数可以读入一行字符串

C、使用>>可以输入时,遇到空格或制表符时都会停止

D、也支持<<操作

答案:【也支持<<操作】36.单选题:关于C++的main()函数说法不正确的是

选项:

A、必须得显式地写return语句返回一个整型值

B、函数类型是int型

C、可以带参数

D、可以不带参数

答案:【必须得显式地写return语句返回一个整型值】37.单选题:Theoutputofthefollowingprogramis[]inta=0,b=3;printf("%d%d",(a<<1),(b<<2));

选项:

A、12

B、00

C、06

D、012

答案:【012】38.单选题:Forthestatement:int*a[10],*b;thecorrectdescriptionis[]

选项:

A、acanonlybelvalue,butbcanbervalue

B、acanonlybervalue,butbcanbelvalue

C、bothaandbcanonlybelvalue

D、bothaandbcanonlybervalue

答案:【acanonlybervalue,butbcanbelvalue】39.单选题:InCprogramminglanguage,theresultofstatement5^4is[]

选项:

A、1

B、2

C、3

D、4

答案:【1】40.单选题:Theoutputofthefollowingstatementsis[](ASCIIcodeof'a'is97)inta=98;charb=‘a’;printf("%c%d",(char)a,(int)b);

选项:

A、b97

B、98a

C、a98

D、97b

答案:【b97】41.单选题:Thekeyword"unsigned"canmodifythekeyword[]

选项:

A、signed

B、longdouble

C、long

D、float

答案:【long】42.单选题:程序如果出现了一个整数溢出错误,则应该抛出的异常是

选项:

A、bad_exception

B、bad_cast

C、logic_error

D、runtime_error

答案:【runtime_error】43.单选题:当程序员在派生类构造函数中显式调用基类构造函数时,应将被调用基类构造函数放在:

选项:

A、派生类构造函数体中

B、派生类构造函数初始化列表中

C、派生类内嵌对象的就地初始化语句中

D、其它三个选项都不对

答案:【派生类构造函数初始化列表中】44.单选题:以下类的声明中有错误,请指出错误的代码行号classA{public:A(inta=0){x=a;}staticvoidf1(){x++;};private:intx;staticinty;};

选项:

A、3

B、4

C、7

D、11

答案:【7】45.单选题:类Circle有一个无参构造函数,还有一个接收一个参数的构造函数,那么下面匿名对象相关的代码中,哪些是正确的?

选项:

A、Circlec={Circlea};

B、Circlec{1.0}=Circle;

C、Circlec;c=Circle{};

D、Circlec;c(Circle{1});

答案:【Circlec;c=Circle{};】46.单选题:下列代码正确的是

选项:

A、autoa{10};decltype(a)y;

B、decltype(auto)x;

C、autof(){returnauto;}

D、autoarray[]{1.0,2.0};

答案:【autoa{10};decltype(a)y;】47.单选题:对于intconstx=3;autoy{x};auto&z{x};则y和z的类型分别是

选项:

A、constint和int

B、int和int

C、int和constint

D、int和int&

答案:【int和constint】48.单选题:boolx=static_cast('a');booly=(x!=true);x和y的值分别是什么?

选项:

A、truetrue

B、truefalse

C、falsefalse

D、falsetrue

答案:【truefalse】49.单选题:char*a=newchar[32];对应的释放内存的语句是:

选项:

A、freea;

B、delete*a;

C、deletea[];

D、delete[]a;

答案:【delete[]a;】50.单选题:对于语句int&x=y,y=0;说法正确的是

选项:

A、y是一个引用

B、x存放的是y的地址

C、y的地址是0

D、有语法错误

答案:【有语法错误】51.单选题:Whichstatementsatisfiesthecondition:Ifstrings1equalstostringss2,thenexecuteST.[]

选项:

A、if(strcmp(s2,s1)==0)ST;

B、if(sl==s2)ST;

C、if(strcpy(sl,s2)==1)ST;

D、if(sl-s2==0)ST;

答案:【if(strcmp(s2,s1)==0)ST;】52.单选题:Giventhefollowingprogram,whendo-whileloopfinishes,thevalueofxis[]enum{APPLE,LEMON=6,ORANGE,BANANA=2,GRAPE};voidf(){intx=GRAPE;do{x++;}while((x-APPLE)<=ORANGE);}

选项:

A、6

B、ORANGE

C、BANANA

D、8

答案:【8】53.单选题:下述代码中,statement应该如何写才能使得程序输出1intt=1;try{......throwt;......}catch(statement){cout<<i;}

选项:

A、inti

B、floati

C、unsignedinti

D、exceptioni

答案:【inti】54.单选题:关于Vec2D类中重载的+运算符,对于代码Vec2Dr1,r2;//initializer1,r2;cout<<r1+r2;说法正确的是

选项:

A、通过对象r1调用了重载的+运算符

B、通过对象r2调用了重载的+运算符

C、通过cout返回的对象调用了重载的+运算符

D、其它三个说法都不对

答案:【通过对象r1调用了重载的+运算符】55.单选题:获取C:盘总容量的语句是:

选项:

A、std::filesystem::pathp{R"(C:\temp\hello\world)"};std::filesystem::space(p).capacity;

B、std::filesystem::space("C:\").capacity;

C、std::filesystem::pathp{"C:/"};std::filesystem::space(p).available;

D、std::filesystem::pathp{"C:/"};std::filesystem::capacity(p).size();

答案:【std::filesystem::pathp{R"(C:\temp\hello\world)"};std::filesystem::space(p).capacity;】56.单选题:用于判断是否成功打开文件流的函数是

选项:

A、success()

B、fail()

C、good()

D、ok()

答案:【fail()】57.单选题:关于抽象类的正确说法是

选项:

A、可以定义抽象类的对象

B、抽象类中的所有函数都有函数体

C、抽象类不可实例化

D、抽象类只能包含一个抽象函数

答案:【抽象类不可实例化】58.单选题:对于如下代码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行代码分别调用的是

选项:

A、B::f()与D::f()

B、B::f()与B::f()

C、D::f()与D::f()

D、D::f()与B::f()

答案:【B::f()与D::f()】59.单选题:cout<<std::setprecision(4)<<std::fixed<<3.14;输出:

选项:

A、3.14

B、3.140

C、3.1400

D、3

答案:【3.1400】60.单选题:类B是类A的派生类,对于代码Aa,*pa=&a;Bb,*pb=&b;下述说法正确的是

选项:

A、表达式pb=pa是Upcast

B、表达式pb=&a是Upcast

C、a=b是Upcast

D、pa=pb是Upcast

答案:【pa=pb是Upcast】61.单选题:关于类的友元函数说法正确的是

选项:

A、友元函数可以在类的外声明

B、友元函数必须在类内声明

C、友元函数不能访问类的成员

D、类的函数成员不能访问友元函数

答案:【友元函数必须在类内声明】62.单选题:关于C++11引入的std::array类,说法不正确的是

选项:

A、在C++17中,定义std::array对象时,可以省略数组类型和数组大小,改为由该对象初始化的值进行自动推断

B、std::array对象中保存了数组元素的数量

C、std::array对象可以像原生数组那样用下标那样访问元素

D、std::array对象不能用基于范围的for循环遍历

答案:【std::array对象不能用基于范围的for循环遍历】63.单选题:char*a=newchar[32];对应的释放内存的语句,哪种写法最好?

选项:

A、deletea;a=nullptr;

B、delete*a;

C、delete[]a;

D、delete[]a;a=nullptr;

答案:【delete[]a;a=nullptr;】64.单选题:给定函数1voidf(inta,intb=1,intc=2){}和函数2voidf(intx,inty=3){}对于下面语句f(3,,1);来说,表述正确的是:

选项:

A、调用的是函数1

B、调用的是函数2

C、定义一个新的重载函数

D、编译器会对函数调用语句报错

答案:【编译器会对函数调用语句报错】65.单选题:对于已有代码chara[3],b[3];char*constp=a;合法的后续语句是:

选项:

A、p[0]='a';

B、*(p++)='b';

C、p=b;

D、p[3]=b[0];

答案:【p[0]='a';】66.单选题:在32位编译器中,constintx=10;cout<<sizeof(x);的输出是:

选项:

A、2

B、4

C、8

D、16

答案:【4】67.单选题:inti=1;cout<<i<<i++;上面的代码的输出是

选项:

A、11

B、12

C、21

D、第二行代码是一句病式。最终结果依赖于两个i的取值次序。这是C++标准中未定义的行为。不同编译器会输出不同的结果。

答案:【第二行代码是一句病式。最终结果依赖于两个i的取值次序。这是C++标准中未定义的行为。不同编译器会输出不同的结果。】68.单选题:关于编译预处理,说法正确的是

选项:

A、using是预处理指令

B、#defineHELLO是定义了一个宏,名字叫HELLO

C、#defineHELLOHELLO是定义了一个宏,名字叫HELLO

D、C++源代码经过编译预处理之后,就变成了目标代码

答案:【#defineHELLO是定义了一个宏,名字叫HELLO】69.单选题:Whichofthefollowingstatementsarecompletelycorrect?[]

选项:

A、int*p;scanf("%d",&p);

B、int*p;scanf("%d",p);

C、intk,*p=&k;scanf("%d",p);

D、intk,*p;*p=&k;scanf("%d",p);

答案:【intk,*p=&k;scanf("%d",p);】70.单选题:TherelationshipbetweenchararrayandC-stylestringis[]

选项:

A、Ifastringisstoredinachararray,thesizeofthechararraymaybeNOTgreaterthanthelengthoftheC-stylestring.

B、Ifastringisstoredinachararray,thesizeofthechararraymustbegreaterthanthelengthoftheC-stylestring.

C、Thestringcanbestoredonlyinchararray.

D、Afterdefiningachararray,thesizeofthearraycanbechangedaccordingtothelengthoftheC-stylestring.

答案:【Ifastringisstoredinachararray,thesizeofthechararraymustbegreaterthanthelengthoftheC-stylestring.】71.单选题:Thefollowingprogramcomputesthesummaryoftheintegersthatarelessthann.Thestatementsintheblankshouldbe[]intsum(unsignedintn){if(________){return1;}else{returnn+sum(n-1);}}

选项:

A、n=1

B、n>1

C、n<0

D、1==n

答案:【1==n】72.单选题:Thefollowingprogramsinitializeanarray.Thecorrectoneis:[]

选项:

A、inta1[4]={4,3,2,1,0};

B、inta2[]={4,,3,2};

C、inta3[4]={3,2,1};

D、inta4[]={};

答案:【inta3[4]={3,2,1};】73.单选题:Theoutputofthestatements:inta=3,b=4;printf("%d",(a>=b?a:ais[]

选项:

A、3

B、4

C、0

D、1

答案:【4】74.单选题:Thestring"r\tu\r\"Okay?\"\n"willoccupy[]bytesmemory.

选项:

A、12

B、13

C、15

D、18

答案:【13】75.单选题:禁止一个类被其他类继承,可以使用的C++关键字或者标识符是

选项:

A、noinherit

B、void

C、finally

D、final

答案:【final】76.单选题:下面代码中,不正确使用代理构造的是

选项:

A、structA{A():A(2){}A(intx){}A(doubled){}};

B、structA{A():A{2}{}A(intx):A{static_cast(x)}{}A(doubled):A{}{}};

C、structA{A():A(2){}A(intx){}A(doubled):A{static_cast(d)}{}};

D、structA{A(){}A(intx):A{}{}A(doubled):A{}{}};

答案:【structA{A():A{2}{}A(intx):A{static_cast(x)}{}A(doubled):A{}{}};】77.单选题:下面代码输出的结果是:cout<<R"Hello("Hello")Hello";

选项:

A、Hello

B、HelloHelloHello

C、Hello("Hello")Hello

D、"Hello"

答案:【"Hello"】78.单选题:以下代码中,第几行有错误?classS{intx=7;intn(7);std::strings{"Hello"};inta[]={1,2,3};autob[]={1,2,3};public:S(){}};

选项:

A、3,5,6

B、3,6

C、4

D、1,5,6

答案:【3,5,6】79.单选题:对于语句constchar*p="Hello";执行下面那条语句不会导致错误?

选项:

A、p[0]='A';

B、p="World";

C、cin>>p;

D、*(p+1)='E';

答案:【p="World";】80.单选题:对于以下代码autox{2.f};x的类型是

选项:

A、float

B、double

C、int

D、auto

答案:【float】81.单选题:char*p=newchar(32);对应的释放内存的语句是:

选项:

A、delete[]p;

B、free(p);

C、deletep;

D、deletep;

答案:【deletep;】82.单选题:chara,b;cin>>a;b=cin.get();从键盘上输入字符x然后回车,那么b中存放的是

选项:

A、随机的字符

B、字符x

C、字符a

D、换行符

答案:【换行符】83.单选题:类模板中,不能使用泛型的地方有:

选项:

A、数据域成员的类型

B、构造函数的返回值类型

C、getter函数的返回值类型

D、setter函数的参数类型

答案:【构造函数的返回值类型】84.单选题:当使用参数将被调函数中的错误信息返回给主调函数时,被调函数的参数类型可以是:

选项:

A、int*

B、int

C、string

D、vector

答案:【int*】85.单选题:对于代码inta=10;floatb=10.001;cout<<setw(4)<<a<<b<<endl;cout<<setfill('0')<<a<<setw(7)<<b;的输出结果是(答案中用下划线代替空格)

选项:

A、__1010.010_10.001

B、__1010.00110010.001

C、10__10.00101010.001

D、1010.001__01010.001

答案:【__1010.00110010.001】86.单选题:对于下面的代码,说法正确的是classA{public:A(inta=0){x=a;}staticvoidf1(){y++;};private:intx;staticinty;};intmain(){A::f1();return0;}

选项:

A、Precompile阶段报错

B、compile阶段报错

C、link阶段报错

D、编译后执行的时候报错

答案:【link阶段报错】87.单选题:以下类的声明中有错误,请指出错误的代码行号classA{public:A(inta=0){x=a;}staticvoidf1(){x++;};private:intx;staticinty;};

选项:

A、3

B、4

C、7

D、11

答案:【7】88.单选题:如下代码中,类的构造函数与拷贝构造函数的数量分别是classX{public:X();X(int&);X(constX&,int=1);};注意,这里所指的构造函数是狭义的构造函数,不包括拷贝构造函数。

选项:

A、3,1

B、2,1

C、1,2

D、3,2

答案:【2,1】89.单选题:不可变类中不能有:

选项:

A、getter函数

B、setter函数

C、私有数据成员

D、公有函数成员

答案:【setter函数】90.单选题:下面那个语句定义了编译期常量?

选项:

A、intm{1};

B、constchar*s="Hello";

C、intn=1;constintm=n;

D、constexprintm=3;

答案:【constexprintm=3;】91.单选题:集成开发环境中不一定包括

选项:

A、编译器

B、链接器

C、图形界面设计工具

D、调试器

答案:【图形界面设计工具】92.单选题:第一个被称为“ModernC++”的标准是?

选项:

A、C++98

B、C++03

C、C++11

D、C++14

E、C++17

F、C++20

答案:【C++11】93.单选题:对于如下代码:Circle*pCircle2=newCircle(5.9);释放内存的正确语句是:

选项:

A、free(pCircle2);

B、deletepCircle2;

C、deletepCircle2(5.9);

D、deleteCircle(5.9);

答案:【deletepCircle2;】94.单选题:对于代码structX{intx{8};X():x{10}{x=42;}};Xc;则c.x的值是

选项:

A、8

B、10

C、42

D、不能确定

答案:【42】95.单选题:给定例子中的Circle类;则Circlec{},*p=&c;Circlex{8.0},*q=&x;则让c对象的半径也变成8.0的代码有:

选项:

A、q=p;

B、*q=c;

C、*p=x;

D、c=q;

答案:【*p=x;】96.单选题:语句intx=108;中的108存放在哪个区域?

选项:

A、常量区

B、静态区

C、堆区

D、栈区

答案:【常量区】97.单选题:IfcompiledwithaSTANDARDCCOMPILER(e.g.gcc),whichiscorrectaboutthefollowingfunction"add"?[]doubleadd(int*,int*,intk){return(double)(8+k);}intmain(){intx=1,y=2,z=3;add(&x,&y,z);return0;}

选项:

A、Compileerror.Afterfillinginthenameoftheformalparameters,theprogramcanbecompiledwithouterrors;

B、Compileerror.Afterchanging"intk"to"doublek",theprogramcanbecompiledwithouterrors;

C、Compileerror.Afterchanging"return(double)(8+k);"to"return8+k",theprogramcanbecompiledwithouterrors;

D、Compilesuccess.

答案:【Compileerror.Afterfillinginthenameoftheformalparameters,theprogramcanbecompiledwithouterrors;】98.单选题:哪种编程范式是C++11之后才支持的?

选项:

A、结构化编程

B、面向对象编程

C、泛型编程

D、函数式编程

答案:【函数式编程】99.单选题:集成开发环境的英文缩写是

选项:

A、IEE

B、IDD

C、DEV

D、IDE

答案:【IDE】100.单选题:对于如下代码CirclecircleArray[3]={Circle(3),Circle(4)};没有调用Circle类的哪些构造函数?上述代码的编译环境是C++11或者C++14。注意:在C++17中引入了“复制消除”,会对本题的结果产生重要影响。

选项:

A、Circle::Circle(int)

B、Circle::Circle(Circle&)

C、Circle::Circle()

D、Circle::Circle(Circle[])

答案:【Circle::Circle(Circle[])】101.单选题:对于如下代码Circle*p=newCircle[3];正确释放内存的代码是:

选项:

A、delete[]p;

B、delete[3]p;

C、deletep[];

D、deletep(3);

答案:【delete[]p;】102.单选题:以下关于带有初始化器的if语句用法不正确的是

选项:

A、if(autox{3};x>3){//...}

B、if(z==1;intz=1){//...}

C、if(booly=(1==2);1==2){}

D、intfoo(){//...}intmain(){if(autox=foo();x!=foo()){}}

答案:【if(z==1;intz=1){//...}】103.单选题:cin对象中,用于读取一个字符串的函数是

选项:

A、scanf

B、read

C、get

D、gets

答案:【get】104.单选题:以下代码写法哪个不符合工程规范?

选项:

A、usingnamespacestd;

B、usingstd::endl;

C、std::cout<<"Hello";

D、usingstd::endl;std::cout<<endl;

答案:【usingnamespacestd;】105.单选题:Thecorrectoneaboutpointersis:[]Weassumethatallcodesarecompiledon32-bitplatform

选项:

A、structT{doubled;}*p;wherepoccupies4bytesmemory;

B、char*p;wherepoccupies1bytememory;

C、structS{char*m;}n;wherenoccupies1bytememory;

D、double*p;wherepoccupies8bytememory;

答案:【structT{doubled;}*p;wherepoccupies4bytesmemory;】106.单选题:Afterexecutingthefollowingstatements:inti=0;for(;++i<=4;){};thevalueofvariableiis[]

选项:

A、3

B、4

C、5

D、6

答案:【5】107.单选题:Inthefollowingstrings,thecorrectCidentifieris[]

选项:

A、foo-1

B、2d

C、break

D、_256

答案:【_256】108.多选题:面向对象的四个特征中,“P”和“I”分别代表

选项:

A、Polygram

B、Polymorphism

C、Inharitanse

D、Inheritance

答案:【Polymorphism;Inheritance】109.多选题:对于已有代码:chara[3],b[3];charconst*p=a;合法的后续语句是

选项:

A、p=b;

B、p=b+1;

C、p[0]='a';

D、*(++p)='b';

答案:【p=b;;p=b+1;】110.多选题:C++编程过程中的错误有以下几类:

选项:

A、SyntaxError

B、LogicalError

C、RuntimeError

D、MistypeError

答案:【SyntaxError;LogicalError;RuntimeError】111.多选题:C++集成开发环境包括下面所列的哪些部分?

选项:

A、编辑器

B、编译器

C、链接器

D、开发器

E、运行器

F、测试器

答案:【编辑器;编译器;链接器】112.多选题:我们要使用最新版开发工具的原因包括:

选项:

A、新版工具提供更友好的提示信息

B、新版工具提供更便捷的操作

C、新版工具占用空间更小

D、新版工具的速度更快

答案:【新版工具提供更友好的提示信息;新版工具提供更便捷的操作】113.多选题:受到C++语言重要影响的编程语言包括

选项:

A、Java

B、C#

C、Python

D、Haskell

答案:【Java;C#】114.多选题:在函数模板中,泛型T可以作为:

选项:

A、函数参数的类型

B、函数的名字

C、函数的返回值类型

D、函数的局部变量的类型

答案:【函数参数的类型;函数的返回值类型;函数的局部变量的类型】115.多选题:在函数中使用泛型的优点有

选项:

A、节省内存

B、使程序运行更快

C、减少程序员所需编写的代码行数

D、使程序易于维护

答案:【减少程序员所需编写的代码行数;使程序易于维护】116.多选题:如果将下面的函数改为函数模板,那么需要将类型改为泛型参数的构造块包括:intfoo(intx,ints){intt{0};for(inti=0;i<sit="x;"returntcode>

选项:

A、s

B、foo的返回值类型

C、t

D、x

答案:【foo的返回值类型;t;x】117.多选题:如下代码正常编译并可正确运行,则仅仅通过阅读下面的代码,我们可以推测出:#includeintmain(){strings{"Hello"};s[2]='a';return0;}

选项:

A、字符串常量“Hello”在s对象中是用链表存储的

B、string类中对[]运算符进行了重载

C、string的一个构造函数接收字符指针作为其参数

D、重载的[]运算符返回的是一个引用类型的数据(或者对象)

答案:【string类中对[]运算符进行了重载;string的一个构造函数接收字符指针作为其参数;重载的[]运算符返回的是一个引用类型的数据(或者对象)】118.多选题:reinterpret_cast的主要用途是

选项:

A、对基础数据类型进行转换

B、对继承链上的指针类型进行转换

C、将指针转换为数值

D、在不同类型的指针之间进行转换

答案:【将指针转换为数值;在不同类型的指针之间进行转换】119.多选题:用于二进制读写的I/O流函数包括

选项:

A、get()

B、getline()

C、read()

D、write()

答案:【read();write()】120.多选题:关于字符串字面量,下面哪些是正确的?

选项:

A、#include#includeusingnamespacestd::string_literals;intmain(){constchar*s=R"HelloWorld";std::cout<<s;}输出:HelloWorld

B、#include#includeusingnamespacestd::string_literals;intmain(){constchar*s=R"(Hello\nWorld)";std::cout<<s;}输出:Hello\nWorld

C、#include#includeusingnamespacestd::string_literals;intmain(){constchar*s=R"Hello(Hello\nWorld)Hello";std::cout<<s;}输出:Hello\nWorld

D、#include#includeusingnamespacestd::string_literals;//main()..........std::strings1="Hello\0World";autos2="Hello\0World"s;s1.size()的值是5s2.size()的值是11

E、#include#includeusingnamespacestd::string_literals;//main()..........autos1="Hello\0World"s;s1的类型是constchar*

答案:【#include#includeusingnamespacestd::string_literals;intmain(){constchar*s=R"(Hello\nWorld)";std::cout<<s;}输出:Hello\nWorld;#include#includeusingnamespacestd::string_literals;intmain(){constchar*s=R"Hello(Hello\nWorld)Hello";std::cout<<s;}输出:Hello\nWorld;#include#includeusingnamespacestd::string_literals;//main()..........std::strings1="Hello\0World";autos2="Hello\0World"s;s1.size()的值是5s2.size()的值是11】121.多选题:关于assert()和static_assert说法正确的有

选项:

A、assert(bool_expression)断言可以用于编译期

B、assert(bool_expression)断言判断bool_expression表达式是否为真,若为真,则退出并提示

C、static_assert(bool_expression,message)断言只能用于编译期,且bool_expression必须是编译期常量表达式

D、按照C++11的标准规定,static_assert(bool_expression,message)断言中,message这个参数可以省略

E、static_assert和assert不能互换

答案:【static_assert(bool_expression,message)断言只能用于编译期,且bool_expression必须是编译期常量表达式;static_assert和assert不能互换】122.多选题:关于异常处理的流程,以下说法正确的是

选项:

A、如果某个try块中有throw语句,那么执行throw语句后,该try块中throw语句之后的所有语句都会被跳过

B、如果某个try块中的代码抛出了一个异常,那么在这个异常被捕获之前的所有语句都会被跳过

C、try块中的throw语句抛出了一个异常,那么这个异常会被紧随其后的catch块捕获并处理

D、如果某个函数执行时抛出了一个异常,这个函数中没有捕获该异常,那么这个函数结束时,该异常也就自动消失了。

答案:【如果某个try块中有throw语句,那么执行throw语句后,该try块中throw语句之后的所有语句都会被跳过;如果某个try块中的代码抛出了一个异常,那么在这个异常被捕获之前的所有语句都会被跳过】123.多选题:对于如下函数模板,正确的调用方式包括:templateSmaxValue(Ss1,Ss2,Tt){Ss3;//dosomethingreturns3;}

选项:

A、maxValue(1,1.0,'a');

B、maxValue("Hello","World","!");

C、maxValue('A','\n',"\n");

D、maxValue(3.0,3.1,-5);

答案:【maxValue("Hello","World","!");;maxValue('A','\n',"\n");;maxValue(3.0,3.1,-5);】124.多选题:以下代码中,符合编码规范的有

选项:

A、intnPersons;

B、intmEggs;

C、stringmovieNo;

D、intstudentIDNumber;

答案:【intnPersons;;stringmovieNo;】125.多选题:关于自定义异常类说法正确的是

选项:

A、必须继承c++标准库中给出的异常类

B、继承了c++标准库中给出的异常类,则可以在自定义异常类的构造函数体中调用基类的构造函数

C、自定义异常类的构造函数可以有参数

D、从C++自带异常类继承来的自定义异常类通过调用其基类构造函数,可以将异常状况的描述信息保留下来留待异常处理程序使用

答案:【自定义异常类的构造函数可以有参数;从C++自带异常类继承来的自定义异常类通过调用其基类构造函数,可以将异常状况的描述信息保留下来留待异常处理程序使用】126.多选题:如下代码中,statement语句在语法和逻辑上都正确的是try{if(number2==0)thrownumber1;......}catch(statement){cout<<e<<endl;}

选项:

A、inte

B、int&e

C、int*e

D、constint&e

答案:【inte;int&e;constint&e】127.多选题:下列打开scores.txt文件方法正确的是

选项:

A、ofstreamofs("c:\scores.txt");

B、ofstreamofs("c:\\scores.txt");

C、ofstreamofs;ofs.open("c:\scores.txt"s);

D、ofstreamofs;ofs.open(R"hello(c:\scores.txt)hello");

答案:【ofstreamofs("c:\\scores.txt");;ofstreamofs;ofs.open(R"hello(c:\scores.txt)hello");】128.多选题:关于cin和cout说法正确的有

选项:

A、cin与cout都是类

B、cin是一个istream类的对象

C、cout是一个ostream类的对象

D、cin和cout都是ios类的对象

答案:【cin是一个istream类的对象;cout是一个ostream类的对象】129.多选题:C++中用于文件输入输出的头文件包括

选项:

A、ifstream

B、ofstream

C、stdio

D、fstream

答案:【ifstream;ofstream;fstream】130.多选题:打开一个输出文件流的方法包括

选项:

A、std::filesystem::pathp{"out.txt"};std::ofstreamoutput{p};

B、std::ofstreamoutput{"out.txt"};

C、std::filesystem::pathp{"out.txt"};std::ofstreamoutput{};output.open(p);

D、std::filesystem::pathp{"out.txt"};p.open();

答案:【std::filesystem::pathp{"out.txt"};std::ofstreamoutput{p};;std::ofstreamoutput{"out.txt"};;std::filesystem::pathp{"out.txt"};std::ofstreamoutput{};output.open(p);】131.多选题:对于下面的代码structA{voidfoo(intx){};};structB:A{voidfoo(){};};intmain(){Bb;//通过对象b,调用基类的foo(int)函数;}想要完成第9行任务,该怎么办?

选项:

A、在第九行写:b.foo(2);

B、在第九行写:b.A::foo(2);

C、在第五行前面插入:usingA::foo;然后在第九行写:b.foo(2);

D、在第九行写:static_cast(b).foo(2);

答案:【在第九行写:b.A::foo(2);;在第五行前面插入:usingA::foo;然后在第九行写:b.foo(2);;在第九行写:static_cast(b).foo(2);】132.多选题:拷贝构造函数的参数数量可以是

选项:

A、0

B、1

C、2

D、多于2个

答案:【1;2;多于2个】133.多选题:拷贝构造函数的参数数量可以是

选项:

A、0

B、1

C、2

D、多于2个

答案:【1;2;多于2个】134.多选题:对于下面类C,空白处要填写一个运算符重载的函数原型,正确的有:classC{private:intx{0};inty{0};public:C()=default;_________________}

选项:

A、voidoperator++();

B、Coperator++(intdummy);

C、Coperator-();

D、Coperator-(constC&a,constC&b);

答案:【Coperator++(intdummy);;Coperator-();】135.多选题:C++中,与文件输入输出的流类有

选项:

A、fstream

B、ifstream

C、ofstream

D、istringstream

E、ostringstream

答案:【fstream;ifstream;ofstream】136.多选题:函数的override现象要求基类函数与派生类函数满足下面的条件

选项:

A、函数名和函数返回值相同

B、函数参数个数、类型、次序相同

C、函数在类声明中定义

D、基类函数应为虚函数

答案:【函数名和函数返回值相同;函数参数个数、类型、次序相同;基类函数应为虚函数】137.多选题:在C++11中,派生类不继承的特殊函数有

选项:

A、构造函数

B、析构函数

C、友元函数

D、拷贝构造函数

答案:【析构函数;友元函数】138.多选题:vector对象中可以保存的数据的类型包括

选项:

A、int

B、char*

C、std::string

D、std::array

答案:【int;char*;std::string;std::array】139.多选题:对于函数模板templatevoidfoo(Tt){//Dosomething}的显式实例化方法有

选项:

A、templatevoidfoo(long);

B、templatevoidfoo(double);

C、templatevoidfoo<>(char);

D、templatevoidfoo(int);

答案:【templatevoidfoo(double);;templatevoidfoo<>(char);;templatevoidfoo(int);】140.多选题:声明泛型时,可以使用关键字

选项:

A、class

B、public

C、generic

D、typename

答案:【class;typename】141.多选题:在被调函数中,如何将发生的错误告知主调函数?

选项:

A、可以使用被调函数返回值

B、可以使用被调函数的参数

C、可以使用全局变量

D、可以使用被调函数的局部变量

答案:【可以使用被调函数返回值;可以使用被调函数的参数】142.多选题:对于下面代码说法正确的有classA{public:A(intx){}};classB:publicA{public:B(){}};intmain(){Bb;}

选项:

A、编译错误

B、编译正确,但是运行时没有输出信息

C、在第三行代码后加上A()=default;就能编译通过

D、在第二行代码后加上A(){}就能编译通过

E、第七行改成B():A(0){}就能编译通过

答案:【编译错误;在第三行代码后加上A()=default;就能编译通过;在第二行代码后加上A(){}就能编译通过;第七行改成B():A(0){}就能编译通过】143.多选题:对于如下代码Circlecircle1;Circle*pCircle=&circle1;正确访问对象成员函数的方法是

选项:

A、circle1.getArea();

B、pCircle.getArea();

C、(&circle1)->getArea();

D、(&pCircle)->getArea();

答案:【circle1.getArea();;(&circle1)->getArea();】144.多选题:下列代码能累加数组元素的有

选项:

A、intx[]{3,5,7};autosum{0};for(autoi:x)sum+=i;

B、intx[]{3,5,7};autosum{0};for(inti=0;i<3;i++)sum+=*(x+i);

C、intx[]{3,5,7};autosum{0};for(iinx)sum+=i;

D、intx[]{3,5,7};autosum{0};while(x)sum+=x;

答案:【intx[]{3,5,7};autosum{0};for(autoi:x)sum+=i;;intx[]{3,5,7};autosum{0};for(inti=0;i<3;i++)sum+=*(x+i);】145.多选题:char*p=newchar(32);释放内存的语句是:

选项:

A、delete[]p;

B、free(p)

C、deletep;

D、deletep;

答案:【delete[]p;;deletep;】146.多选题:关于元编程和泛型编程说法正确的有

选项:

A、元编程是编写能够

温馨提示

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

最新文档

评论

0/150

提交评论