C++程序设计实践-北京科技大学中国大学mooc课后章节答案期末考试题库2023年_第1页
C++程序设计实践-北京科技大学中国大学mooc课后章节答案期末考试题库2023年_第2页
C++程序设计实践-北京科技大学中国大学mooc课后章节答案期末考试题库2023年_第3页
C++程序设计实践-北京科技大学中国大学mooc课后章节答案期末考试题库2023年_第4页
C++程序设计实践-北京科技大学中国大学mooc课后章节答案期末考试题库2023年_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

C++程序设计实践_北京科技大学中国大学mooc课后章节答案期末考试题库2023年对递归程序的优化的一般的手段为【】

参考答案:

尾递归优化

派生类公有继承基类时,可以访问基类的所有数据成员。

参考答案:

错误

已知有如下代码,执行后*p1和*p2的值是?int*p1,p2;inta=1;p1=&a;p2=p1;*p1=2;*p2=3;

参考答案:

无法编译

派生类对象不会建立基类的私有数据成员。

参考答案:

错误

以下关于类间关系,描述正确的是()

参考答案:

use-a和has-a关系在代码中的表现形式是相同的,我们只能从语义的角度区分这两种关系。_part-of、has-a、uses-a这三种关系的共同点是A类中包含B类型的成员。

以下关于智能指针,描述正确的是

参考答案:

share_ptr指针与其他指针一起管理动态对象,只有当管理此对象的所有指针生存期结束之后,此对象才能被释放。_weak_ptr可以指向share_ptr所管理的动态对象。

在KMP算法中,计算模式串中各位置最长相同前后缀长度的数组kmpNext,是在()阶段进行计算

参考答案:

预处理阶段

右值引用的宿主生存期非常短,通常是用完就会被释放掉。

参考答案:

正确

move()函数可将赋值运算符的右操作数强制转换为左值。

参考答案:

错误

关于函数模板,描述正确的是()

参考答案:

template中的T可以作为返回类型、参数类型和函数中的变量类型。_编译器负责实现函数模板的实例化。

下列函数的运行结果是:inta[6]={1,2,3,4,5,6};int*p=a;cout<<*p++;cout<<*(p++);cout<<*(++p);cout<<*++p;

参考答案:

1245

下列哪种算法在文本匹配时,不需要文本指针回溯()

参考答案:

AC算法

代码阅读的次数多于编写的次数,但是为了保证程序员很好的编写代码,应该确保索取的名字更侧重于编写方便,而不是阅读方便。

参考答案:

错误

线性表采用链式存储,便于插入和删除操作。

参考答案:

正确

在单链表中,只要知道某个节点的指针即可访问该节点。因此,单链表是一种随机存取结构。

参考答案:

错误

注释不但为了提高可读性,而且会被计算机编译。

参考答案:

错误

注释是编写程序的人给一条语句、程序段、函数、类和文件等的解释或提示,能提高程序代码的可读性。

参考答案:

正确

对于给定的整数数组,求出最大值,程序运行结果没有求出最大值。这种错误属于()

参考答案:

逻辑错误

结构化程序设计主要强调的是【】

参考答案:

程序的易读性

请问当调用f(10)时,f()被调用多少次?intf(intx){if(x<=2)return1;returnf(x-2)+f(x-4)+1;}

参考答案:

15

算法的空间复杂度是指【】

参考答案:

算法执行过程中所需要的存储空间

算法的时间复杂度是指【】

参考答案:

算法执行过程中所需要的基本运算次数

下列函数的输出内容是:chara[10]={"abcdefg"};char*p=&a[3];cout<

参考答案:

“defg”

程序流程图中带有箭头的线段表示的是:

参考答案:

控制流

在某段代码代码中,如果函数没有定义出现的错误属于()

参考答案:

语法错误

链表的长度是链表所占用的存储空间的大小。

参考答案:

错误

已知链表H,指针p指向H中某结点,执行语句p=p->next不会删除该链表中结点。

参考答案:

正确

在一个以H为头节点的单循环链表中,指针p指向链表尾的条件是()。

参考答案:

p->next==H

在一个单向循环链表中,若要在p所指的节点之后插入一个新结点s,则需要执行下面哪个语句段()。

参考答案:

s->next=p->next;p->next=s;

某线性表中最常用的操作是“在最后一个元素之后插入一个元素”和“删除第一个元素”,则采用哪种数据结构最节省操作时间()。

参考答案:

仅有尾指针的单循环链表

一个递归算法必须包括【】

参考答案:

终止条件和递归部分

下列叙述中正确的是【】

参考答案:

上述三种说法都不对

写出如下程序的运行结果:1.#include2.usingnamespacestd;3.voide(int);4.5.main()6.{7.inta;8.a=3;9.e(a);10.}11.12.voide(intn)13.{14.if(n>0)15.{16.e(--n);17.cout<

参考答案:

0120

下列选项中不属于结构化程序设计方法的是【】

参考答案:

可复用

写出以下递归程序的运行结果#includeusingnamespacestd;voidf(intx[].Intn){if(n>1){f(&x[1],n-1);cout<

参考答案:

654321

一个算法应该是【】。

参考答案:

问题求解步骤的描述

下面叙述正确的是【】

参考答案:

算法的有穷性是指算法必须能在执行有限个步骤之后终止

某算法的时间复杂度为O(【图片】),表明该算法的【】。

参考答案:

执行时间与成正比

算法的有穷性是指:

参考答案:

算法程序的运行时间是有限的

关于对象的复制和移动语义,以下描述正确的是

参考答案:

用一个旧对象去初始化新对象时,会调用复制构造函数。_在实现移动构造函数时要将动态数组的控制权由传入对象转移给当前对象。

已知H是带头节点的单链表,节点p既不是第一个节点,也不是尾节点,删除p节点直接后继的语句是()

参考答案:

p->next=p->next->next;

以下关于类的继承关系,描述正确的是()

参考答案:

类之间的继承关系具有传递性。_一个基类可以有多个派生类。_一个派生类可以有多个基类。

已知inta=1;下列四句话,能够成功编译的是:

参考答案:

int*p2=&a;_int*p4=&*p2;

以下【】意图是用来描述SINGLETON(单例)?

参考答案:

保证一个类仅有一个实例,并提供一个访问它的全局访问点。

以下哪些问题通过应用成绩模式不能够解决【】

参考答案:

确定软件的功能都正确实现

设计模式具有的优点【】

参考答案:

适应需求变化

设计模式的两大主题是【】

参考答案:

系统复用与系统扩展

设计模式一般用来解决什么样的问题【】

参考答案:

同一问题的不同表相

冒泡排序算法最坏情况下的时间复杂度是()

参考答案:

Θ()

下面哪种算法是针对大数据具有优秀的排序性能,且实现相对简单()

参考答案:

快速排序

对下列关键字序列用快速排序法进行排序时,速度最慢的是()

参考答案:

(5,10,15,20,25,30,35)

下面哪种排序算法最适合对杂乱无章的数据进行排序()

参考答案:

快速排序

关于类模板,描述正确的是

参考答案:

类模板制作出的类中数据成员个数相同并且函数成员个数也相同。_类模板如果有数组型的数据成员,数组的长度可以用变量定义。_类模板内部有可能出现对全局函数的定义。_对类模板中的成员函数进行专门化处理的目的是让成员函数适用于特殊场景。

以下对"开-闭"原则的一些描述错误的是?

参考答案:

"开-闭"原则与"对可变性的封装原则"没有相似性.

对于给定的一段文本和一个模式,下面几种算法中,那种算法比较次数最多()

参考答案:

BF算法

对于模式={GCAGTM}建立坏字符数组bmBc[],没有出现在模式中的字符K,bmBc[k]是()

参考答案:

6

关于容器,描述正确的是

参考答案:

vector容器本质上是类模板_array、vector和deque中的元素会被按序存放在一块连续的内存中。_在删除头尾元素的情形下,list容器与vector容器效率一样。

可以用下标访问list容器中的元素。

参考答案:

错误

判断带头结点的单链表H为空的条件是()

参考答案:

H->next==NULL

已知H为不带头节点的单链表。在H的表头插入一个新结点t的语句段是:()

参考答案:

t->next=H;H=t;

关于迭代器,以下描述正确的是

参考答案:

由std::set::const_iteratorit;定义的迭代器it,仅适用于set型容器。_容器stack、容器queue、容器priority_queue没有迭代器。_使用间址运算可获取迭代器所指元素的值。

执行以下语句后,变量a的值是?inta=1;int*p1=&a;*p1=2;a=3;int*p2=p1;*p2=4;

参考答案:

4

阅读以下代码,请问函数的输出结果是?#includeusingnamespacestd;intmain(){inta=1;intb=2;intc=3;intd=4;int*p1=&a;int*p2=&b;int*p3=&c;p2=p3;p1=&d;p3=p1;cout<<a<

参考答案:

1234434

weak_ptr仅能存储动态对象的地址,不能访问对象的成员。

参考答案:

正确

封装性好的代码更容易测试,因为它与其他代码没有耦合

参考答案:

正确

类A和类B之间的关系如图所示,则称类B中的getName()方法是对类A中的getName()方法的重载(overload)。【图片】

参考答案:

错误

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

参考答案:

正确

下列关于数组与指针的区别描述正确的是?

参考答案:

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

执行以下代码的结果是:chars[5];s="good";cout<

参考答案:

编译出错

设二维数组A[0…m-1][0…n-1]按行优先顺序存储在内存中,第一个元素的地址为p,每个元素占k个字节,则元素a[i][j]的地址为()

参考答案:

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

以下代码的输出结果是:#includeusingnamespacestd;intSize(char*a){returnsizeof(a);}intmain(){chara[10],b[10];cout<

参考答案:

108

已知inta[]={0,2,4,6,8,10},*p=a+1;其值等于0的表达式是()?

参考答案:

*(--p)

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

参考答案:

a

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

参考答案:

错误

每个Raptor程序都必须有一个Start和End符号。

参考答案:

正确

以下程序的输出结果是______。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);}

参考答案:

32

Team类描述球队,球队由一组球员组成(m_players成员),以下语句错误的是?【图片】

参考答案:

4

以下关于匿名函数代码,说法错误的是【图片】

参考答案:

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

有Date类和Person类,以下代码中对成员的初始化那句是错误的?【图片】

参考答案:

4

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

参考答案:

4

使用分治法求解不需要满足的条件是()。

参考答案:

子问题必须是一样的

求递归次数,请问当调用f(10)时,f()被调用()次?intf(intx){if(x<=2)return1;returnf(x-2)+f(x-4)+1;}

参考答案:

15

实现合并排序利用的算法是()

参考答案:

分治策略

下列哪些设计模式在结构上符合下图的描述?【图片】

参考答案:

装饰器模式_代理模式

关于继承表述错误的是:()

参考答案:

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

设计模式一般用来解决什么样的问题()

参考答案:

同一问题的不同表相

在寻找n个元素中第k小元素问题中,如快速排序算法思想,运用分治算法对n个元素进行划分,如何选择划分基准?下面()答案解释最合理。

参考答案:

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

在程序中需要给变量命名,下面哪种是错误的命名法()

参考答案:

大小写命名法

在程序代码布局中,每行只写一条语句的优点是()

参考答案:

便于编辑_便于阅读代码_方便定位并改正语法错误_便于调试

以下关于C++标准库中提供的模板,说法错误的是

参考答案:

forward_list中的元素可以通过下标访问_stack和queue都有迭代器

Hanoi塔问题,现要求将塔座A上的所有圆盘移到塔座B上,并仍按同样顺序叠置,移动圆盘时遵守Hanoi塔问题的移动规则,由此设计出解Hanoi塔问题的递归算法正确的是()

参考答案:

void

Hanoi(int

n,

int

A,int

B,int

C){if(n>0){Hanoi

(n-1,A,C,B);Move(n,a,b);Hanoi(n-1,C,B,A);}}

对于给定的整数数组,要求求出最大值,而程序运行结果没有求出正确的最大值。这种错误属于()

参考答案:

逻辑错误

以下代码使用了类模板,对语句解释错误的是【图片】

参考答案:

②使用变量size定义数组长度,此种用法是错误的。_①定义了模板的两个占位符,它们都是类型占位符。

以下代码会出现的错误和原因()【图片】

参考答案:

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

Raptor软件包含______种流程图符号

参考答案:

6##%_YZPRLFH_%##六

在进行设计以应对变化的过程中,应该遵循两条基本策略:找出变化并封装变化点;优先使用对象组合,而不是类继承

参考答案:

正确

为变量命名时最重要的考虑事项是该名字要完全、准确地表述出该变量所代表的事物。

参考答案:

正确

代码阅读的次数多于编写的次数,但是为了保证程序员很好的编写代码,应该确保所取的名字更侧重于编写方便,而不是阅读方便。

参考答案:

错误

执行流程图,若输入n=3,则输出T=______。【图片】

参考答案:

20

下列正确使用new申请数组的方式是():

参考答案:

int*a=newint[10];

应用设计模式的一个优点是【】。

参考答案:

适应需求变化

用递归法求从1到n的立方和:#includeusingnamespacestd;intf(int);intmain(){intn,s;cout<<"inputthenumbern:";cin>>n;s=________;cout<<"Theresultis"<

参考答案:

第1空:f(n)第2空:f(n-1)+n*n*n

斐波那契数列的递归求解:intFib(intn){if(n<=1)returnn;elsereturnFib(n-1)+Fib(n-2);}请填空将上述算法转化为迭代求解:intFib(intn){if(n<=1)return______;inttwoBack=0;intoneBack=1;intcur;for(_______){cur=twoBack+oneBack;twoBack=oneBack;oneBack=cur;}return

温馨提示

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

评论

0/150

提交评论