【MOOC期末】《C++程序设计实践》(北京科技大学)期末考试慕课答案_第1页
【MOOC期末】《C++程序设计实践》(北京科技大学)期末考试慕课答案_第2页
【MOOC期末】《C++程序设计实践》(北京科技大学)期末考试慕课答案_第3页
【MOOC期末】《C++程序设计实践》(北京科技大学)期末考试慕课答案_第4页
【MOOC期末】《C++程序设计实践》(北京科技大学)期末考试慕课答案_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

【MOOC期末】《C++程序设计实践》(北京科技大学)期末考试慕课答案

有些题目顺序不一致,下载后按键盘ctrl+F进行搜索C++程序设计实践(北京科技大学)期末考试1.单选题:关于继承表述错误的是:()

选项:

A、继承是一种通过扩展一个已有对象的实现,从而获得新功能的复用方法。

B、泛化类(超类)可以显式地捕获那些公共的属性和方法。特殊类(子类)则通过附加属性和方法来进行实现的扩展。

C、破坏了封装性,因为这会将父类的实现细节暴露给子类。

D、继承本质上是“白盒复用”,对父类的修改,不会影响到子类。

答案:【继承本质上是“白盒复用”,对父类的修改,不会影响到子类。】2.单选题:Open-Close原则的含义是一个软件实体()

选项:

A、应当对扩展开放,对修改关闭

B、应当对修改开放,对扩展关闭

C、应当对继承开放,对修改关闭

D、以上都不对

答案:【应当对扩展开放,对修改关闭】3.单选题:设计模式一般用来解决什么样的问题()

选项:

A、同一问题的不同表相

B、不同问题的同一表相

C、不同问题的不同表相

D、以上都不是

答案:【同一问题的不同表相】4.单选题:以下代码的输出结果是:#includeusingnamespacestd;intSize(char*a){returnsizeof(a);}intmain(){chara[10],b[10];cout<<<''<<<<''<<

选项:

A、408

B、1010

C、88

D、108

答案:【108】5.单选题:已知inta[]={0,2,4,6,8,10},*p=a+1;其值等于0的表达式是()?

选项:

A、*(p++)

B、*(++p)

C、*(p--)

D、*(--p)

答案:【*(--p)】6.单选题:以下程序的输出结果为()#includeusingnamespacestd;voidprint(char**str){++str;cout<<*str<

选项:

A、world

B、hello

C、字符w的起始地址

D、字符e

答案:【world】7.单选题:已知inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;,不能表示数组a中元素的式子是()。

选项:

A、*p

B、*a

C、a[p-a]

D、a

答案:【a】8.单选题:这段代码的输出结果是#includeusingnamespacestd;voidfunc(int*p,int*q){p++;*q=*q+1;}intmain(){intm=1,n=2,*r=&m;func(r,&n);cout<<<","<<<","<

选项:

A、1,4

B、2,3

C、1,2

D、1,3

答案:【1,3】9.单选题:某公司欲开发一个软件系统的在线文档帮助系统,用户可以在任何一个查询上下文中输入查询关键字,如果当前查询环境下没有相关内容,则系统会将查询按照一定的顺序转发给其他查询环境。基于上述需求,采用【】最为合适。

选项:

A、责任链模式

B、桥接模式

C、迭代器模式

D、适配器模式

答案:【责任链模式】10.单选题:应用设计模式的一个优点是【】。

选项:

A、适应需求变化

B、程序易于理解

C、减少开发过程中的代码开发工作量

D、简化软件系统的设计

答案:【适应需求变化】11.单选题:Hanoi塔问题,现要求将塔座A上的所有圆盘移到塔座B上,并仍按同样顺序叠置,移动圆盘时遵守Hanoi塔问题的移动规则,由此设计出解Hanoi塔问题的递归算法正确的是()

选项:

A、voidHanoi(intn,intA,intC,intB){if(n>0){Hanoi(n-1,A,C,B);Move(n,a,b);Hanoi(n-1,C,B,A);}}

B、voidHanoi(intn,intA,intB,intC){if(n>0){Hanoi(n-1,A,C,B);Move(n,a,b);Hanoi(n-1,C,B,A);}}

C、voidHanoi(intn,intC,intB,intA){if(n>0){Hanoi(n-1,A,C,B);Move(n,a,b);Hanoi(n-1,C,B,A);}}

D、voidHanoi(intn,intC,intA,intB){if(n>0){Hanoi(n-1,A,C,B);Move(n,a,b);Hanoi(n-1,C,B,A);}}

答案:【voidHanoi(intn,intA,intB,intC){if(n>0){Hanoi(n-1,A,C,B);Move(n,a,b);Hanoi(n-1,C,B,A);}}】12.单选题:Raptor流程通过拖动顺序、选择、循环、赋值等流程图框进行算法描述,能够根据输入数据得到运行结果吗?

选项:

A、不能

B、可以,只要raptor流程图正确描述了算法,九能够根据输入执行得到正确结果

C、可以,但是有时不能得到正确结果

D、不知道

答案:【可以,只要raptor流程图正确描述了算法,九能够根据输入执行得到正确结果】13.单选题:下图所示的算法流程图中,输出S的表达式为()。

选项:

A、1+2+3+......+100

B、1/(1+2+3+.....+100)

C、1+2+3+......+99

D、1/(1+2+3+.....+99)

答案:【1+2+3+......+99】14.单选题:算法的三种逻辑结构是

选项:

A、顺序,流程,循环

B、顺序,条件,嵌套

C、顺序,条件,循环

D、流程,条件,循环

答案:【顺序,条件,循环】15.单选题:求递归次数,请问当调用f(10)时,f()被调用()次?intf(intx){if(x<=2)return1;returnf(x-2)+f(x-4)+1;}

选项:

A、14

B、15

C、20

D、24

答案:【15】16.单选题:实现合并排序利用的算法是()

选项:

A、分治策略

B、动态规划法

C、贪心法

D、回溯法

答案:【分治策略】[vk-content]17.单选题:使用分治法求解不需要满足的条件是()。

选项:

A、子问题必须是一样的

B、子问题不能够重复

C、子问题的解可以合并

D、原问题和子问题使用相同的方法解规模改变,问题性质不变

答案:【子问题必须是一样的】18.单选题:在寻找n个元素中第k小元素问题中,如快速排序算法思想,运用分治算法对n个元素进行划分,如何选择划分基准?下面()答案解释最合理。

选项:

A、随机选择一个元素作为划分基准

B、取子序列的第一个元素作为划分基准

C、用中位数的中位数方法寻找划分基准

D、以上皆可行,但不同方法,算法复杂度上界可能不同

答案:【以上皆可行,但不同方法,算法复杂度上界可能不同】19.单选题:分治法的设计思想是将一个难以直接解决的大问题分割成规模较小的子问题,分别解决子问题,最后将子问题的解组合起来形成原问题的解。这要求原问题和子问题()。

选项:

A、问题规模相同,问题性质相同

B、问题规模相同,问题性质不同

C、问题规模不同,问题性质相同

D、问题规模不同,问题性质不同

答案:【问题规模不同,问题性质相同】20.单选题:根据下列算法语句,当输入x为60时,输出y的值为()

选项:

A、25

B、30

C、31

D、61

答案:【31】21.单选题:流程图是描述()的常用工具。

选项:

A、程序

B、算法

C、数据结构

D、计算规则

答案:【算法】22.单选题:关于算法的说法中正确的有()。Ⅰ.求解某一类问题的算法是唯一的(如:冒泡排序可以用:穷举法、递归)Ⅱ.算法必须在有限步操作之后停止Ⅲ.算法的每一步操作必须是明确的,不能有歧义或含义模糊Ⅳ.算法执行后一定产生确定的结果

选项:

A、1个

B、2个

C、3个

D、4个

答案:【3个】23.单选题:在程序中需要给变量命名,下面哪种是错误的命名法()

选项:

A、匈牙利命名法

B、大小写命名法

C、下划线命名法

D、驼峰式命名法

答案:【大小写命名法】24.单选题:程序布局中需要确定如何将较长语句延续到下一行,下面从更易读和更易维护的角度,哪种方式是最优的程序布局()

选项:

A、后续行缩进

B、对齐于首个参数

C、每个参数一行,对齐于首个参数

D、每个参数一行,每个参数正常缩进

答案:【每个参数一行,每个参数正常缩进】25.单选题:对于给定的整数数组,要求求出最大值,而程序运行结果没有求出正确的最大值。这种错误属于()

选项:

A、语法错误

B、运行错误

C、逻辑错误

D、调用错误

答案:【逻辑错误】26.单选题:在某段代码代码中,如果函数没有定义出现的错误属于()

选项:

A、语法错误

B、运行错误

C、逻辑错误

D、调用错误

答案:【语法错误】27.单选题:以下程序的输出结果是______。structnode{intx,y;structnode*p;}L[2];main(){L[0].x=1;L[0].y=2;L[1].x=3;L[1].y=4;L[0].p=&L[1];L[1].p=L;printf("%d%d\n",(L[0].p)->x,(L[1].p)->y);}

选项:

A、12

B、23

C、14

D、32

答案:【32】28.单选题:有Date类和Person类,以下代码中对成员的初始化那句是错误的?

选项:

A、1

B、2

C、3

D、4

答案:【4】29.单选题:以下是使用面向对象的思想实现的球员类(Player)和教练类(Coach),每个球员只能有一个教练,每个教练可以有多个球员,以下代码中哪条语句是不合理的?

选项:

A、1

B、2

C、3

D、4

答案:【4】30.单选题:用面向对象的思想编写程序实现球员类(Player),其中成员birthday为球员的生日,成员teams为其所属的球队(假设一个球员可以属于多个球队),以下代码中哪个成员的定义是不合理的?

选项:

A、1

B、2

C、3

D、4

答案:【4】31.单选题:下面代码的输出结果是()int*a=newint[10];cout<<<’’<<<code=""><<’’<<<>

选项:

A、108

B、88

C、44

D、84

答案:【88】32.单选题:下列正确使用new申请数组的方式是():

选项:

A、int*a=newint[];

B、int*a=intnew[];

C、int*a=new[int];

D、int*a=newint[10];

答案:【int*a=newint[10];】33.单选题:下列关于数组与指针的区别描述正确的是?

选项:

A、数组要么在静态存储区被创建(如全局数组),要么在栈上被创建

B、用运算符sizeof可以计算出数组的大小(字节数)

C、指针可以随时指向任意类型的内存。

D、用运算符sizeof可以计算出指针所指向内容的容量(字节数)

答案:【用运算符sizeof可以计算出数组的大小(字节数)】34.单选题:执行以下代码的结果是:chars[5];s="good";cout<<<code=""><<>

选项:

A、g

B、good

C、“good”

D、编译出错

答案:【编译出错】35.单选题:设二维数组A[0…m-1][0…n-1]按行优先顺序存储在内存中,第一个元素的地址为p,每个元素占k个字节,则元素a[i][j]的地址为()

选项:

A、p+[(i*n+j)]*k

B、p+[(i-1)*n+j-1]*k

C、p+[(j-1)*n+i-1]*k

D、p+[j*n+i-1]*k

答案:【p+[(i*n+j)]*k】36.单选题:以下关于匿名函数代码,说法错误的是

选项:

A、queryScore是在匿名函数之外声明的,这里被捕获到匿名函数中使用。

B、->后面的bool,说明了匿名函数返回值的类型。

C、匿名函数体中可以定义局部变量。

D、auto类型的变量rx接收匿名函数的返回值。

答案:【auto类型的变量rx接收匿名函数的返回值。】37.单选题:以下代码会出现的错误和原因()

选项:

A、出现编译错误,在类的定义中不能重复使用占位符T。

B、出现运行错误,s2的m_id无法正常输出。

C、出现编译错误,实例化时不能将T设置为char*型。

D、出现运行错误,s2的delete重复释放了内存空间。

答案:【出现运行错误,s2的m_id无法正常输出。】38.单选题:Coach类和Player类继承于Person类,且Person类中重载了输出运算符<<,使用cout<<imgsrc="/0669b4c0a16c42ad99eec41e39e66ff0.png"alt="image"/>

选项:

A、dynamic_cast(it->second)

B、static_cast(it->second)

C、dynamic_cast(it->second)

D、static_cast(it->second)

答案:【dynamic_cast(it->second)】39.单选题:Team类描述球队,球队由一组球员组成(m_players成员),以下语句错误的是?

选项:

A、1

B、2

C、3

D、4

答案:【4】40.多选题:某银行系统采用FactoryMethod方法描述其不同账户之间的关系,设计出的类图如下所示。其中与FactoryMethod中的“Creator”角色相对应的类是【】,与“Product”角色相对应的类是【】。

选项:

A、Bank

B、Account

C、Checking

D、Savings

答案:【Bank;Account】41.多选题:下列哪些设计模式在结构上符合下图的描述?

选项:

A、策略模式

B、代理模式

C、装饰器模式

D、观察者模式

答案:【代理模式;装饰器模式】42.多选题:在程序代码布局中,每行只写一条语句的优点是()

选项:

A、便于阅读代码

B、方便定位并改正语法错误

C、便于调试

D、便于编辑

答案:【便于阅读代码;方便定位并改正语法错误;便于调试;便于编辑】43.多选题:以下说法错误的是

选项:

A、move()函数可将变量强制转换为左值。

B、移动构造函数的作用是完成深复制操作。

C、unique_ptr独享它所指向的动态对象。

D、shared_ptr与其他指针共同管理一个动态对象。

答案:【move()函数可将变量强制转换为左值。;移动构造函数的作用是完成深复制操作。】44.多选题:以下关于C++标准库中提供的模板,说法错误的是

选项:

A、vector是典型的顺序容器模板

B、forward_list中的元素可以通过下标访问

C、multimap中的key可以重复,并且元素有序存放

D、stack和queue都有迭代器

答案:【forward_list中的元素可以通过下标访问;stack和queue都有迭代器】45.多选题:以下代码使用了类模板,对语句解释错误的是

选项:

A、①定义了模板的两个占位符,它们都是类型占位符。

B、②使用变量size定义数组长度,此种用法是错误的。

C、③的形参包括一个initializer_list类型的对象,这种对象可以接收任意长度的元素集合。

D、④使用模板生成了类实例Undergraduate。

答案:【①定义了模板的两个占位符,它们都是类型占位符。;②使用变量size定义数组长度,此种用法是错误的。】46.单选题:在进行设计以应对变化的过程中,应该遵循两条基本策略:找出变化并封装变化点;优先使用对象组合,而不是类继承

选项:

A、正确

B、错误

答案:【正确】47.单选题:类A和类B之间的关系如图所示,则称类B中的getName()方法是对类A中的getName()方法的重载(overload)。

选项:

A、正确

B、错误

答案:【错误】48.单选题:封装性好的代码更容易测试,因为它与其他代码没有耦合

选项:

A、正确

B、错误

答案:【正确】49.单选题:输入任意一个学生的考试成绩,然后按其所属分数段打印对应等级:90-100分为A等,80-89分为B等,70-79为C等,60-69为D等,60分以下为E等。raptor完成上述功能的算法流程图是错误的。

选项:

A、正确

B、错误

答案:【错误】50.单选题:每个Raptor程序都必须有一个Start和End符号。

选项:

A、正确

B、错误

答案:【正确】51.单选题:递归调用算法与相同功能的非递归算法相比,主要问题在于重复计算太多,而且调用本身需要分配额外的空间和传递数据和控制,所以时间与空间开销通常都比较大。

选项:

A、正确

B、错误

答案:【正确】52.单选题:为变量命名时最重要的考虑事项是该名字要完全、准确地表述出该变量所代表的事物。

选项:

A、正确

B、错误

答案:【正确】53.单选题:在只有头节点指针的单链表上,插入新元素时,插在表尾比插在表头更方便

选项:

A、正确

B、错误

答案:【错误】54.单选题:求某单链表的长度需要遍历整个链表。

选项:

A、正确

B、错误

答案:【正确】55.单选题:已知单链表节点定义如下:structnode{intdata;structnode*next;}设指针p指向单链表中某节点,指针q指向某单个节点,则在p所指节点后面插入q所指节点的操作是:p->next=q;q->next=p->next;

选项:

A、正确

B、错误

答案:【错误】56.单选题:已知单链表节点定义如下:structnode{intdata;structnode*next;}设指针p指向单链表中某节点,指针q指向某单个节点,则在p所指节点后面插入q所指节点的操作是:p->next=q;

选项:

A、正确

B、错误

答案:【错误】57.单选题:某单向循环链表只有尾节点指针T,则需要遍历整个单向循环链表才能访问头节点。

选项:

A、正确

B、错误

答案:【错误】58.单选题:某单向循环链表只有头节点指针L,则需要遍历整个单向循环链表才能访问尾节点。

选项:

A、正确

B、错误

答案:【正确】59.单选题:一组数据,采用数组存储和采用链表存储时,查找的效率不同,但占用的存储空间是一样的。

选项:

A、正确

B、错误

答案:【错误】60.单选题:单链表节点和双向链表节点占用的存储空间是一样的。

选项:

A、正确

B、错误

答案:【错误】61.单选题:良好的代码布局可以改善代码的可读性

选项:

A、正确

B、错误

答案:【正确】62.单选题:代码阅读的次数多于编写的次数,但是为了保证程序员很好的编写代码,应该确保所取的名字更侧重于编写方便,而不是阅读方便。

选项:

A、正确

B、错误

答案:【错误】63.单选题:注释不但为了提高可读性,而且会被计算机编译。

选项:

A、正确

B、错误

温馨提示

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

评论

0/150

提交评论