面向对象程序设计Ⅱ学习通超星期末考试答案章节答案2024年_第1页
面向对象程序设计Ⅱ学习通超星期末考试答案章节答案2024年_第2页
面向对象程序设计Ⅱ学习通超星期末考试答案章节答案2024年_第3页
面向对象程序设计Ⅱ学习通超星期末考试答案章节答案2024年_第4页
面向对象程序设计Ⅱ学习通超星期末考试答案章节答案2024年_第5页
已阅读5页,还剩8页未读, 继续免费阅读

付费下载

下载本文档

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

文档简介

面向对象程序设计Ⅱ学习通超星期末考试章节答案2024年C++源程序文件的默认扩展名为

。

答案:.cpp在一个好的程序中,注释可提高程序的程序的

。

答案:可读性C++程序的实现经过

、

和

步骤。

答案:编辑;编译;编译连接;运行在C++语言中,“/*…*/”主要用于

行注释,“//”用于

行注释。

答案:多;单;1判断一种计算机语言是否为面向对象程序设计语言的三个基本特征是

、______

和

。

答案:封装性;继承性;多态性以下关于C++语言的叙述中,错误的是()

答案:大写字母和小写字符的意义相同C++语言可执行程序的开始执行点是()

答案:程序中的main函数在一个C++程序中()

答案:main函数可以在任何地方出现程序中的注释部分()

答案:不参加编译,也不会出现在目标程序中注释的目的主要是用来提高()

答案:可读性C++程序的基本单位是()

答案:函数下列变量名中,合法的是()

答案:CHINA下列符号中,不可作为分隔符的是()

答案:问号下列标识符中都是合法的是()

答案:_key,example,a_b不能用于组成C++程序标识符的是()

答案:连接符在C++语言中,自定义的标识符()

答案:不能使用关键字并且区分大小写为了使模块尽可能独立,要求()

答案:模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱下列描述中,正确的是()

答案:软件就是程序、数据与相关文档的集合下列说法中,正确的是()

答案:C++程序总是从主函数开始执行C++语言最有意义的方面是支持()

答案:面向对象面向对象程序设计将数据与()放在一起,做为一个相互依存、不可分割的整体来处理。

答案:对数据的操作C++语言支持过程程序设计方法和()设计方法。

答案:面向对象C++语言是从早期的C语言逐渐发展演变而来的,与C语言相比,它在求解问题方法上进行的最大改进是()

答案:面向对象将高级语言编写的源程序翻译成目标程序的是()

答案:编译程序C++对C作了很多改进,从面向过程成为面向对象的主要原因是()

答案:引进了类和对象的概念关于C和C++的描述中,正确的是()

答案:

C++是C的超集由C++目标文件连接而成的可执行文件的缺省扩展名为()

答案:

exe不可以作为C++用户标识符的是()

答案:

case

关于C++与C语言的关系描述中,错误的是()

答案:

C++和C语言都是面向对象的

以下程序的运行结果是什么?#includeusingnamespacestd;intmain(){

charx('m'),y('n');

intn;

n=x3)+(y-x==1);

cout<答案:113以下程序的运行结果是什么?

#includeusingnamespacestd;intmain(){

inta;

a=7*2+-3%5-4/3;

doubleb;

b=510+3.2-5.4/0.03;

cout<答案:10

333.20

4t3以下程序的运行结果是什么?#includeusingnamespacestd;intmain(){floatx;inti;x=12.6;i=(int)x;cout<<"x="<答案:x=12.6i=12展转相除法求两个整数a和b的最小公倍数。#includeusingnamespacestd;intmain(){inta=10,b=15;inttemp,i=1;if([1]){temp=a;a=b;b=temp;}while(i*a%b!=0)[2];cout<<[3]<答案:a求3到100之间的所有素数之和。#includeusingnamespacestd;

[1]intmain(){intsum=0;for(inti=3;i<=100;i++){inttemp=int(sqrt(i));for(intj=2;j<=temp;j++)if(i%j)[2]if([3])sum+=i;}cout<答案:include

;

#include;break;;j>temp下列描述正确的是()

答案:不是每个C++程序都必须包含预处理命令#include执行以下程序段的输出结果是()ints1=0,s2=0,s3=0,s4=0;for(intt=1;t<=4;t++)switch(t){caset>=4:s1++;break;caset>=3:s2++;break;caset>=2:s3++;break;default:s4++;}cout<答案:

编译不通过下面的程序()

#include

voidmain(){

inta=5,b=4,c=3;

if(a=b+c)cout<<”***”<答案:输出***

下列关于if语句的描述中错误的是()

答案:

if语句中if体内不能是开关语句

下面的do语句的循环体执行次数为()

inta=10;

do{a--;}while(a!=0);

答案:

10

在设计C++程序时,应采用的原则之一是()

答案:程序结构应有助于读者理解与以下程序段等价的是()

while(a){if(b)continue;c;}

答案:while(a){if(!b)c;}

关于switch语句的描述中,正确的是()

答案:switch语句中default子句可以没有,也可有一个在C++中,const修饰符主要用于代替C语言中的()关键字进行常量定义。

答案:define下列运算符中,可以作用于浮点数的是()

答案:++

设intn=10,i=4;,则表达式n%=i+1运算后n的值是()

答案:

0

下列关于类型转换的描述中错误的是()

答案:在不同类型操作数组成的表达式中,表达式类型一定是最高类型double型sizeof(double)是一个()

答案:整型表达式表达式(-17)%5的值()表达式(-17)%(-5)的值。

答案:等于字符串”\\\”ABC\”\\”的长度是()

答案:7

在C++语言中,char型数据在内存中的存储形式是()

答案:ASCII码在32位机器环境下,若有inta[10];,则表达式sizeof(a)/sizeof(int)的值是()

答案:10

关于字符'\0'的下列描述中不正确的是()

答案:

是空格字符的转义表示形式

在C++语言中,080是()

答案:非法数下列字符串常量表示中,错误的是()

答案:

”AB\C”下列字符常量表示中,错误的是()

答案:‘\4f’unsigned不能修饰的类型是()

答案:float英文大写字母B的ASCII码为42H,英文小写字母b的ASCII码为()

答案:

62H常量3.14的数据类型是()

答案:double下面的函数Sort()用于对整数数组array按升序排序的选择排序算法,其中参数n表示array数组中存储的数组元素数。voidSort(intarray[],intn){intk;[1];for(inti=0;i答案:intt;k=i;i+1;1+i;array[k]=array[i];array[i]=t下面的函数bubble()是对整数数组a按升序排序的冒泡算法,其中,参数a存储将被排序的数据,size是数组a中存储的元素数目,请完成该函数。voidbubble(inta[],intsize){

[1];for(intp=1;[2];p++)for(inti=0;[3];i++)if(a[i]>a[i+1]){temp=a[i];

[4];[5];}}

答案:inttemp;p下面的函数fun未使用中间变量实现对两个数的交换,请完成下列函数的定义。voidfun(int&x,int&y)

{x+=y;y=[1];

[2];}

答案:x-y;x=x-y

;

x-=y文件包含命令中对被包含的文件名的要求是()

答案:不一定是.h下列关于内联函数的描述中错误的是()

答案:用inline修饰的函数原型其对应的函数也将成为内联函数下列关于内联函数的说法中不正确的是()

答案:

内联函数在被调用时发生控制转移若函数没有返回值,则该函数的类型应被说明为()

答案:void下列关于C++函数的说法中正确的是()

答案:

如函数先调用后定义,则必须在调用前说明C++语言中允许同一程序中有相同的函数名存在,称为()

答案:

函数重载以下的函数调用语句中实参的个数是()

fun(a+b,(x,y),fun(n+k,d,(a,b)));

答案:3在函数说明中,不必要的是()

答案:函数参数的名字在函数的返回值类型与返回值表达式的类型描述中错误的是()

答案:函数返回值的类型就是返回值表达式的类型适宜定义为内置函数的是()

答案:需要加快程序的执行速度

在函数的传值调用中,要求()

答案:

形参和实参对应类型一致,个数相等关于局部变量的说法中,不正确的是()

答案:函数声明中的形式参数名在函数被调用时分配内存空间不属于重载函数调用时选择依据的是()

答案:函数类型关于递归函数的说法中,不正确的是()

答案:

解决同一个问题的递归函数的效率比非递归函数的效率要高已知函数func的原型是:doublefunc(double*pd,int&ri);变量x和y的定义是:doublex;inty;把x和y分别作为第一参数和第二参数来调用func,正确的调用语句是()

答案:

func(&x,y);关于设置C++函数参数默认值的描述中,正确的是()

答案:设置函数参数默认值时,应该是先设置右边的再设置左边的在函数定义前加上inline表示该函数被定义为()

答案:

内置函数关于内置函数的说法中,不正确的是()

答案:类的内置函数必须在类体外通过加关键字inline定义若要定义一个只允许本源文件中所有函数能使用的全局变量,则该变量需要使用的存储类别是()

答案:static写出程序运行结果。#includeusingnamespacestd;classClassOne{public:

ClassOne();

ClassOne(intvalue);

voidPrint();

~ClassOne();private:

inti;};classClassTwo{public:

ClassOne

myclass;

ClassTwo();

ClassTwo(intvalue);

voidPrint();

~ClassTwo();private:

inti;};

ClassOne::ClassOne(){

cout<<”ThisisconstructorofClassOne!”<答案:ThisisconstructorofClassOne!ThisisconstructorofClassTwo!TheiofClassTwois10ThisisadestructorofClassTwo!ThisisadestructorofClassOne!写出下列程序的运行结果

#includeusingnamespacestd;classMyClass{

charch;

public:

MyClass();

MyClass(charcharacter);

voidPrint();

~MyClass();};MyClass::MyClass(){

cout<<"Thisisaconstructor!"<答案:Thisisaconstructor!Thisisaconstructor!ThevalueofchisaThevalueofchisbThisisadestructor!Thisisadestructor!以下程序输出的第二行是

[1]

。

#includeusingnamespacestd;classPoint{

intx,y;

public:

Point(){x=1;y=1;}

Point(inttx,intty){x=tx;y=ty;}

~Point(){cout<<"Point"<答案:Point1,1isdeleted.下面的类定义了拷贝构造函数,请完成该类的定义和实现(设拷贝构造函数形参名为p)。classMyClass{public:MyClass(intxx=0,intyy=0){X=xx;

Y=yy;}

[1]

;

//拷贝构造函数

private:

intX,Y;};MyClass::

[2]

{

X=

[3]

;

[4]

;

答案:MyClass(MyClass&p;MyClass(MyClass&p;p.X;Y=p.Y下面的类中定义了一个关于星期的枚举类型,请完成下面的程序。classMyClass{public:

enumWeek{Sun,Mon,Tue,Wed,Thu,Fri,Sat};

Weekweek;};voidfun(MyClass&my){[1]

=

[2]

;

/*将对象my的week赋值为所定义的枚举类型值为3的枚举量*/}

答案:my.week;MyClass::Wed若类A的构造函数定义为:A(intaa=1,intbb=0){a=aa;b=bb;},则执行:Ax(4);后,x.a和x.b的值分别是()

答案:

4,0

对于任意一个类,析构函数的个数最多为()

答案:1

假设MyClass是一个类,则该类的拷贝初始化构造函数的声明语句为()

答案:MyClass(MyClass&x);

在面向对象的程序设计中,首先需要在问题域中识别出若干个()。

答案:类

在C++中用类将数据和对数据操作的代码连接在一起称为()。

答案:封装下列关于析构函数的描述中,错误的是()。

答案:析构函数可以重载

()是析构函数的特征。

答案:

一个类只能定义一个析构函数下列关于构造函数的描述中,错误的是()。

答案:构造函数可以有返回值已知类A中一个成员函数说明如下:

VoidSet(A&a);其中,A&a的含义是()。

答案:a是类A的对象引用,用来做函数Set()的形参关于内联函数的说法中,不正确的是()。

答案:类的内联函数必须在类体外通过加关键字inline定义对于拷贝构造函数和赋值操作的关系,正确的描述是()。

答案:当调用拷贝构造函数时,类的对象正在被建立并被初始化对于拷贝构造函数,正确的描述是()。

答案:在C++语言中,如果不自定义类的拷贝构造函数,则每个类都有默认的拷贝构造函数为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为()。

答案:public对于结构体中定义的成员,其默认的访问权限是()。

答案:public在C++中,数据封装要解决的问题是()。

答案:防止不同模块之间数据的非法访问假定MyClass为一个类,则该类的拷贝构造函数的声明语句是()。

答案:MyClass&(MyClass

&x)

类的析构函数的作用是()。

答案:删除对象对类的构造函数和析构函数描述正确的是()。

答案:构造函数可以重载,析构函数不能重载通常拷贝构造函数的参数是()。

答案:某个对象的引用名

写出程序运行结果。#includeusingnamespacestd;classR{

intR1,R2;public:R(intr1,intr2){R1=r1;R2=r2;}voidprint(){cout<<"voidprint()"<答案:voidprint()5:4voidprint()const20:52写程序运行结果.#includeusingnamespacestd;classA{inti,j;staticintc;public:A(inta=0,intb=0){i=a;j=b;c++;}~A(){c--;}staticvoidf(){cout<<"c="<答案:c=5

c=3下列程序通过把类Distance定义为类Point的友元类来实现计算两点之间距离的功能。请完成该程序。(假设没有给出坐标的点为原点)#include#includeusingnamespacestd;classPoint

{public:

[1]

;

Point(

[2]

)

{X=a;

Y=b;}

voidPrint()

{

cout<<”X=”<答案:friendclassDistance;floata=0,floatb=0;result=sqrt((q.X-p.X请将如下程序补充完整,使程序的输出结果为“10-6”#includeusingnamespacestd;classTest{

intx,y;public:

Test(inti,intj):

[1]

{}

intget()const{returnx-y;}

intget(){returnx+y;}};intmain(){

Testt1(4,6);[2]

t2(2,8);

cout<答案:x(i;constTest;Testconst下面对静态数据成员的描述中,正确的是()

答案:

静态数据成员是类的所有对象共享的数据

下面对于友元函数描述正确的是()

答案:

友元函数破坏了类的封装性和隐藏性

下列有关一个类的友元函数的叙述中,正确的()

答案:

允许在类外访问类中的任何成员

下列关于静态成员的描述中错误的是()

答案:

对静态成员的访问不受访问权限的限制

下列关于静态成员函数的说法中不正确的是()

答案:

静态成员函数中可以直接引用类的非静态成员

对于常成员函数,下面描述正确的是()

答案:

只有常成员函数可以操作常对象

对于常数据成员,下面的描述正确的是()

答案:

常数据成员必须被初始化,并且不能更新

一个类的友元函数或友元类能够通过成员操作符访问该类的()

答案:

所有成员关于常成员函数的说法中,不正确的是()

答案:

常成员函数可以引用和修改类的非常数据成员

关于友元的描述中,正确的是()

答案:

友元函数要在类体内说明下列关于静态数据成员的特性描述中错误的是()

答案:

静态数据成员不是所有对象所共用的关于成员函数特征的下述描述中错误的是()

答案:

成员函数一定是内联函数

友元的作用是()

答案:

提高成员的运行效率

不属于类的成员函数的是()

答案:

友元函数

f()函数是类的一个常成员函数,它有一个int型参数,并且返回类型为int。下列对该常成员函数进行声明的选项中,正确的是()

答案:

intf(int)const;

以下叙述中不正确的是()

答案:

程序中有调用关系的函数必须放在同一个原文件中

若类A被说明成是类B的友元,则()

答案:

类B不一定是类A的友元局部变量可以隐藏全局变量,在有同名全局变量和局部变量的情形时,可以用()提供对全局变量的使用。

答案:

域运算符对C++编译器区分重载函数无意义的信息是()。

答案:A

返回值类型

写程序运行结果。#includeusingnamespacestd;classMyClass

{public:

voidSetValue(intval);

MyClass();

~MyClass();

private:

inti;};MyClass::MyClass(){i=0;

cout<<”Thisisaconstructor!i=”<答案:Thisisaconstructor!i=0Thisisaconstructor!i=0Thisisaconstructor!i=0Thisisadestructor!i=0Thisisadestructor!i=0Thisisadestructor!i=0写程序运行结果。#includeusingnamespacestd;classMyClass

{public:

voidSetValue(intval);

MyClass();

~MyClass();

private:

inti;};MyClass::MyClass(){i=0;

cout<<”Thisisaconstructor!i=”<SetValue(k+1);

p++;}return0;}

答案:Thisisaconstructor!i=0Thisisaconstructor!i=0Thisisaconstructor!i=0i=1i=2i=3Thisisadestructor!i=3Thisisadestructor!i=2Thisisadestructor!i=1下列程序在构造函数和析构函数中申请和释放类的私有成员,请完成类的实现。classMyClass

{public:

MyClass(inta);

~MyClass();

private:

int*X;};MyClass::MyClass(inta){

[1]

;}MyClass::~MyClass(){

[2]

;}

答案:X=newint(a;deleteX已知:char*constp="abc";,则下列语句合法的是()

答案:p[2]='k';定义函数指针的是()

答案:

int(*p)();

若有定义:int*p=newint;,则下列说法中不正确的是()

答案:系统为指针变量p分配了一个整型数据的存储空间引用调用的调用方式是指()

答案:形参是引用,实参是变量关于new运算符的错误的描述是()。

答案:使用运算符new创建对象数组时必须定义初始值对下列语句正确的描述是()。

constint*x;//(1)

int*constx;//(2)

答案:语句(2)的含义是指针变量x不能更改类MyClass的定义如下:classMyClass{

public:

MyClass(){}

MyClass(inti){value=newint(i);}

int*value;

};若对value赋值,则下面语句正确的是()。

答案:MyClassmy(10);类MyClass的定义如下:classMyClass{

public:

MyClass(){value=0;}

SetVariable(inti){value=i;}

Private:

intvalue;};则对下列语句序列正确的描述是()。

MyClass*p,my;p=&my;

答案:语句p->SetVariable(5)与语句my.SetVariable(5)等价假定MyClass为一个类,则执行MyClassa[3],*p[2];语句时,自动调用该类构造函数()次。

答案:3

以下关于new运算符的描述中()是错误的。

答案:使用它创建对象数组时必须指定初始值关于this指针的说明不正确的是()。

答案:this指针可以被赋值关于delete的描述中,正确的是()。

答案:它必须用于new返回的指针对于语句“inta;constint*ptr=&a;”,下列描述正确的是()。

答案:ptr是指向常量的指针,不能通过ptr改变a的值

写出程序运行结果。#includeusingnamespacestd;classBase

{public:

voidf(){cout<<"funofBase"<f();return0;}

答案:funofBasefunofBase写程序运行结果#includeusingnamespacestd;classB1

{

intb1;public:

B1(inti){b1=i;cout<<"B1::"<答案:B2::2

B1::1

B3::3

D::4请改正程序中的错误,使程序的输出结果如下:Base1Base23,1,4注意:(1)只修改注释的下一行,不要改动程序中的其它内容,也不允许增加或删减语句。

(2)写出修改后完整的一行。#includeusingnamespacestd;classBase{public:Base1(intx){b1=x;cout<<”Base1”<答案:intb1;;intBase2::b2=0;;Derived(inta,intb请将如下程序补充完整,使程序的输出结果为:b=0,d=0b=1,d=2源程序清单:#includeusingnamespacestd;classBase

{public:

[1]

{b=x;}

protected:

intb;};classDerived:publicBase

{

intd;public:

Derived():d(0){}Derived(intm,intn):

[2]

{}

voidprint(){cout<<"b="<答案:Base(intx=0;Base(m;void(Derived::*ptr请将如下程序补充完整,使程序的输出结果为:B0:1B1:2B2:3D:123源程序清单:#includeusingnamespacestd;classB0

{public:

B0(intx){a=x;}

voidf(){cout<<"B0:"<答案:virtualpublic;

publicvirtual;B0(x;d.B0::f(下列程序中,编译时不会出错的语句是()。#includeusingnamespacestd;classBase{public:

Base(){}

Base(inti){data=i;}private:

intdata;};classDerived:publicBase{public:

Derived():Base(0)

Derived(intx):Base(x)};intmain(){

Derivedd1(1);

Base*pb,b1;

pb=&d1

//A

d1=b1;

//B

Base&refB=d1;

Derivedd2=*pb;

//C

Derived&refD=refB

//Dreturn0;}

答案:

pb=&d1

下列程序中,划线处正确的语句是()。#includeusingnamespacestd;classBase{public:voidfun(){cout<<”Base::fun”<答案:Base::fun()假设类X以类Y作为它的一个基类,并且X类和Y类具有相同格式的函数func(),obj为类X的对象,则obj.func()语句实现的功能为()。

答案:

执行类X的func()

已知B类是A类的派生类,且有定义:Aa,*p1;Bb,*p2=&b;,则下列选项中属于非法操作的是()。

答案:b=a;

下面()的叙述不符合赋值兼容规则。

答案:

基类的对象可以赋值给派生类的对象带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象初始化()。

答案:一次下面虚基类的声明中,正确的是()。

答案:classB:virtualpublicA多继承的构造顺序可以分为以下4步:(1)所有非虚基类的构造函数按照它们被继承的顺序;(2)所有虚基类的构造函数按照它们被继承的顺序;(3)所有子对象的构造函数按照它们声明的顺序(4)派生类自己的构造函数体

答案:(2)(1)(3)(4)

派生类的构造函数的成员初始化列表中,不能包含()。

答案:基类中子对象的初始化派生类的对象对它的基类成员中()是可以访问的

答案:公有继承的公有成员下列对派生类的描述中,错误的是()。

答案:D.派生类只继承了基类的公有成员和保护成员当派生类从一个基类保护继承时,基类中的一些成员在派生类中成为保护成员,这些成员在基类中原有的访问属性是()。

答案:公有或保护关于多继承二义性的描述中,()是错误的。

答案:基类和派生类中同时出现的同名函数,也存在二义性24.[其它]请改正程序中的错误,使程序的输出结果如下:Base0displayBase1displayDeriveddisplay注意:(1)只修改注释的下一行,不要改动程序中的其它内容,也不允许增加或删减语句。

(2)答题时注明错误的编号,并写出修改后完整的一行。#includeusingnamespacestd;classBase0{public:/************Errorfound[1]************/voiddisplay(){cout<<”Base0display”<答案:[1]virtualvoiddisplay()const[2]voidfun(Base0&b)[3]fun(b0);fun(b1);fun(d);写程序运行结果#includeusingnamespacestd;classBase{public:virtual~Base(){cout<<”BaseDestructor”<fun();

deletep;return0;}

答案:Derived::funDerivedDestructorBaseDestructorA为抽象类,输出为:thisisclassBprintingthisisclassCprinting源程序为:#includeusingnamespacestd;classA{public:[1];};classB:publicA{public:voidprintMe(){

[2]

<<"thisisclassBprinting"<答案:virtualvoidprintMe(;cout;A&a下面函数声明类comp,用友元函数重载运算符"+"。[1]

comp{public:intreal,im

温馨提示

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

评论

0/150

提交评论