算法的空间复杂度

上传人:飞*** 文档编号:40278081 上传时间:2018-05-25 格式:DOC 页数:11 大小:52KB
返回 下载 相关 举报
算法的空间复杂度_第1页
第1页 / 共11页
算法的空间复杂度_第2页
第2页 / 共11页
算法的空间复杂度_第3页
第3页 / 共11页
算法的空间复杂度_第4页
第4页 / 共11页
算法的空间复杂度_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《算法的空间复杂度》由会员分享,可在线阅读,更多相关《算法的空间复杂度(11页珍藏版)》请在金锄头文库上搜索。

1、1) 算法的空间复杂度是指A)算法程序的长度 B)算法程序中的指令条数C)执行算法程序所占的存储空间 D)算法执行过程中所需要的存储空间【答案】D【解析】算法的空间复杂度一般是指这个算法执行时所需要的内存空间,其中包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间,其中额外空间还包括算法程序执行过程的工作单元以及某种数据结构所需要的附加存储空间。(2)线性表的链式存储结构是一种A)随机结构 B)顺序结构 C)索引结构 D)散列结构【答案】B【解析】线性表的链式存储结构中的每一个存储结点不仅含有一个数据元素,还包括指针,每一个指针指向一个与本结点有逻辑关系的结

2、点。此类存储方式属于顺序存储。(3)设有下列二叉树:对此二叉树先序遍历的结果是A)ABCDEF B)DBEAFC C)ABDECF D)DEBFCA【答案】C【解析】二叉树的遍历分为先序、中序、后序三种不同方式。本题要求先序遍历;遍历顺序应该为:访问根结点-先序遍历左子树-先序遍历右子树。按照定义,先序遍历序列是 ABDECF。(4)编制一个好的程序,首先要保证它的正确性和可靠性,还应强调良好的编程风格,在书写功能性注释时应考虑A)仅为整个程序作注释 B)仅为每个模块作注释C)为程序段作注释 D)为每个语句作注释【答案】C【解析】功能性注释是嵌在源程序体中的,用以描述其后的语句或程序段是在做什

3、么工作,或者执行了下面的语句会怎么样。所以它描述的是一段程序,是为程序段做注释,而不是每条语句。(5)下列哪个是面向对象程序设计不同于其他语言的主要特点?A)继承性 B)消息传递 C)多态性 D)静态联编【答案】A【解析】继承是一个子类直接使用父类的所有属性和方法。它可以减少相似的类的重复说明,从而体现出一般性与特殊性的原则,这使得面向对象程序设计语言有了良好的重用性,也是其不同于其他语言的主要特点。(6)需求分析最终结果是产生A)项目开发计划 B)需求规格说明书 C)设计说明书 D)可行性分析报告【答案】B【解析】需求分析应交付的主要文档就是需求规格说明书。(7)在进行单元测试时,常用的方法

4、是A)采用白盒测试,辅之以黑盒测试 B)采用黑盒测试,辅之以白盒测试C)只使用白盒测试 D)只使用黑盒测试【答案】A【解析】白盒测试是测试程序内部逻辑结构,黑盒测试只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。从程序内部的逻辑结构对系统进行测试才是测试的根本,更容易发现和解决程序中的问题,因此单元测试时应该以白盒测试为主,而黑盒测试为辅。(8)数据库是()的集合,它具有统一的结构格式并存放于统一的存储介质,可被各个应用程序所共享。A)视图 B)消息 C)数据 D)关系【答案】C【解析】数据库是数据的集合,其中的数据是按数据所提供的数据模式存放的,它能构造复杂的数据结构,以建立

5、数据之间的内在联系与复杂的关系。(9)下列叙述中,不正确的是A)数据库技术的根本目标是要解决数据共享的问题B)数据库系统中,数据的物理结构必须与逻辑结构一致C)数据库设计是指设计一个能满足用户要求,性能良好的数据库D)数据库系统是一个独立的系统,但是需要操作系统的支持【答案】B【解析】数据库应该具有物理独立性和逻辑独立性,改变其一而不影响另一个。(10)规范化理论中,分解()是消除其中多余的数据相关性。A)关系运算 B)内模式 C)外模式 D)视图【答案】A【解析】数据库规范化的基本思想是逐步消除数据依赖中不合适的部分,根本思想是通过分解关系运算来消除多余的数据相关性。(11)以下说法中,不正

6、确的是A)C 程序中必须有一个 main()函数,从 main()函数的第一条语句开始执 行B)非主函数都是在执行主函数时,通过函数调用或嵌套调用而执行C)C 程序中的 main()函数必须放在程序的开始位置D)C 程序中的 main()函数位置可以任意指定【答案】C【解析】main()函数的作用,以及 main()函数在程序中出现的位置。一个完整的 C 语言程序有且仅有一个主函数(main()函数)。程序总从 main()函数的第一条语句开始执行,到 main()函数的最后一条语句结束,其他函数都是在执行 main()函数时,通过函数调用或嵌套调用而得以执行的。C 语言规定,main()函数

7、在程序中的位置是任意的。(12)变量 a 已被定义为整型,下列表达式不正确的是A)a=A 20 B)a-=a C)a=c 【答案】DD)a=c d【答案】C【解析】在 C 语言中,字符变量可参与任何整数运算。本题中只有 C 有错,因为 C 选项中 c、d 如果是字符常量,应有单引号,如果是变量,应该提前定义。(13)下面程序的输出结果是#include stdio.hmain()int i=010,j=10;printf(“%d,%d“, i,j-) ;A)11,10 B)9,10 C)010,9 D)10,9【答案】B【解析】程序中 i 的值用八进制表示(十进制为 8), i 是在变量使用前

8、自身先加 1,而 j-是在变量使用后自身减 1。(14)下面可以作为 C 语言用户标识符的一组是A)void define WOR【答案】DB)a3_b3 _123 IFC)for -abc caseD)2a D0 sizeof【答案】B【解析】在 C 语言中,合法的标识符可以由字母、数字和下划线组成,其中关键字不能作为用户的标识符,且开头的第一个字符必须为字母或下划线。选项 A 中 void 为关键字;选项 C 中 for 和 case为关键字;选项 D 中 sizeof 为关键字。(15)下面哪一个不是正确的赋值语句?A)a ;B)a=b;C)a =b;D)a=1,b=1;【答案】B【解析

9、】C 语言中赋值语句是由赋值表达式加“;”构成的。赋值表达式的形式为:变量表达式;。选项 A 中 a 相当于 a 1,是赋值语句;选项 C 和选项 D 也是赋值语句。只有选项 B 不是,因为选项B 中“=”符号是等于的意思,并不是赋值运算符。(16)若有定义:int a=8,b=5,c.执行语句 c=a/b 0.4;后,c 的值为A)1.4 B)1 C)2.0 D)2【答案】B【解析】在表达式中根据运算的结合性和运算符的优先级,首先计算的是 a/b(8/5=1),再将 1 0.4 赋值给 c,由于 c 为整型变量所以要将 1.4 转换为整型,即舍弃小数位(c 的值变为 1)。(17)若变量 a

10、 是 int 类型,并执行了语句:a=A 1.6.则正确的叙述是A)a 的值是字符 C B)a 的值是浮点型C)不允许字符型和浮点型相加 D)a 的值是字符 A 的 ASCII 值加上 1。【答案】D【解析】在 C 语言中规定允许不同类型的量进行运算,但在运算时需转换成高级的类型进行运算。在表达式中有字符型和实型参加运算时,统一转换为实型再运算,当运算结果存入变量时再转换为该变量的类型。(18)以下程序段的输出结果是int a=1234.printf(“-n“,a).A)12 B)34 C)1234 D)提示出错、无结果【答案】C【解析】 printf()函数的输出格式,当整数的值超过格式要求

11、输出范围时,原样输出。本题中要求输出两个有效数字,而实际上 a 有 4 个有效数字,故原样输出,输出 1234。(19)以下选项中不属于 C 语言的类型的是A)signed short int B)unsigned long intC)unsigned int D)long short【答案】D【解析】在选项中很明显选项 A 为无符号短整型,选项 B 为无符号长整型,选项 C 为无符号整型,而选项D 的类型在 C 语言中不存在。(20)若有说明语句:int a,b,c,*d=&.c.则能正确从键盘读入三个整数分别赋给变量 a、b、c 的语句是A)scanf(“%d%d%d“,&.a,&.b,d

12、). B)scanf(“%d%d%d“,&.a,&.b,&.d);C)scanf(“%d%d%d“,a,b,d). D)scanf(“%d%d%d“,a,b,*d);【答案】A【解析】scanf()函数有两个参数,第一个参数是输入格式字符串,第二个参数是输入变量地址列表。输入格式字符串主要由“”符号和格式字符组成。地址列表是由多个地址组成的。选项 B 中 d 已经为地址,不应在加上求地址符号“&.”.选项 C 中,a 和 b 都为变量不是地址,应该在 a 和 b 之前加上求地址符号“&.”;选项 D 中指针 d 所指向的存储空间的位置为变量 c 的值,不为地址。(21)在 16 位 C 编译系

13、统上,若定义 long a.,则能给 a 赋 40000 的正确语句是A)a=20000 20000. B)a=4000*10. C)a=30000 10000. D)a=4000L*10L.【答案】D【解析】由于 20000 20000、4000*10 及 30000 10000 都是整型表达式,故运算的结果仍然是整型,表达式运算的结果超出了整型数据的范围,不正确。而 D 是长整型运算,不会超出长整型的范围。(22)以下叙述正确的是A)可以把 define 和 if 定义为用户标识符B)可以把 define 定义为用户标识符,但不能把 if 定义为用户标识符C)可以把 if 定义为用户标识符

14、,但不能把 define 定义为用户标识符D)define 和 if 都不能定义为用户标识符【答案】B【解析】C 语言中的保留字,而 define 不是保留字。用户标识符不允许使用保留字。 (23)若定义:int a=511,*b=&.a.则 printf(“%dn“,*b);的输出结果为A)无确定值 B)a 的地址 C)512 D)511【答案】D【解析】本题中先定义了一个 int 型的变量 a 并赋初值为 511,接着定义了一个指向 a 的指针变量 b,在printf()函数的输出格式中,是输出*b,即输出指针所指向变量 a 的值为 511,因此输出 511。(24)以下程序的输出结果是m

15、ain() int a=5,b=4,c=6,d.printf(“%dn“,d=ab?)(ac? a:c):(b).A)5 B)4 C)6 D)不确定【答案】C【解析】在 C 语言中问号表达式(如:ac?a:c.)的计算规则为:如果 ac 为真,那么表达式的值为 a 的值;否则表达式的值为 c 的值。本题中的 printf()函数中的输出表达式,首先计算括号内的条件表达式,它的值为 6(ac?a:c 中 ac 即 56 为假故该表达式的值为 c 的值即为 6),然后再计算外面表达式(等价于 ab?6:b)的值,同理可得该表达式的值为 6,将值 6 赋值给 d,因此最后输出该表达式的值为 6。(2

16、5)以下程序中,while 循环的循环次数是main() int i=0.while (i10) if(i1)continue.if(i=5) break.i .A)1 B)10 C)6 D)死循环,不能确定次数【答案】D【解析】break 语句只能在循环体和 switch 语句体内使用,当 break 出现在 switch 语句体内时,其作用只是跳出该 switch 语句体。当 break 出现在循环体中,但不在 switch 语句体内时,则在执行 break 后,跳出本层循环体。而 continue 语句的作用是结束本次循环,即跳过本次循环中余下尚未执行的语句,接着再一次进行循环的条件判定。本程序中,变量 i 的初始值为 0,判断 while 后面括号内表达式的值为真,执行循环体内的 if 语句,判断 if 后面括号内表达式的值为真,执行“continue;”语句。因 continue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环的条件判断,所以 i 的值未发生变化,循环条件仍然

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号