《计算机软件技术基础》试题答案
计算机软件技术基础所有题目答案自学定稿版

计算机软件技术基础所有题目答案自学精编W O R D版IBM system office room 【A0816H-A0912AAAHH-GX8Q8-GNTHHJ8】数据结构习题答案2第一节概论2第二节线性表5第三节栈和队列16第五节树19第七节查找25第八节排序29操作系统练习题参考答案32数据结构习题答案第一节概论一、选择题1.要求同一逻辑结构的所有数据元素具有相同的特性,这意味着( )。
A.数据元素具有同一的特点~B.不仅数据元素包含的数据项的个数要相同,而且对应数据项的类型要一致 C.每个数据元素都一样 D.数据元素所包含的数据项的个数要相等2.数据结构是一门研究非数值计算的程序设计问题中计算机的( (1) )以及它们之间的( (2) )和运算的学科。
(1) ~A.操作对象 B.计算方法 C.逻辑存储 D.数据映像(2) A.结构~B.关系 C.运算 D.算法3.数据结构被形式地定义为(D,R),其中D是( (1) )的有限集合,R是D上( (2) )的有限集合。
(1) A.算法~B.数据元素 C.数据操作 D.逻辑结构(2)A.操作 B.映像 C.存储~D.关系4.在数据结构中,从逻辑上可以把数据结构分为( )。
A.动态结构和静态结构 B.紧凑结构和非紧凑结构~C.线性结构和非线性结构 D.内部结构和外部结构5.线性表的顺序存储结构是一种( )的存储结构。
~A.随机存取 B.顺序存取 C.索引存取 D.Hash存取6.算法分析的目的是( )。
A.找出数据结构的合理性 B.研究算法中的输入和输出的关系~C.分析算法的效率以求改进D.分析算法的易懂性和文档性7.计算机算法指的是( (1) ),它必须具备输入、输出和( (2) )等五个特征。
(1) A.计算方法 B.排序方法~C.解决某一问题的有限运算序列 D.调度方法(2) A.可行性、可移植性和可扩充性~B.可行性、确定性和有穷性 C.确定性,有穷性和稳定性 D.易读性、稳定性和安全性8.线性表若采用链表存储结构,要求内存中可用存储单元的地址( )。
《计算机软件技术基础》习题及参考答案

4.以下数据结构中不属于线性数据结构的是______。
A. 队列 B. 线性表 C . 二叉树 D. 栈
5.在计算机中,算法是指______。
A. 查询方法 B. 加工方法 C. 解题方案的准确而完整的描述 D. 排序方法
6.在下列选项中,哪个不是一个算法一般应该具有的基本特征______。
B. 随机存取的存储结构、顺序存取的存储结构
C. 随机存取的存储结构、随机存取的存储结构
D. 任意存取的存储结构、任意存取的存储结构
14.下列关于栈的描述中错误的是。
A.栈是先进后出的线性表B.栈只能顺序存储
C.栈具有记忆作用D.对栈的插入和删除操作中,不需要改变栈底指针
15.栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是______。
A. 程序的规模 B. 程序的易读性 C. 程序的执行效率 D. 程序的可移植性
30.对建立良好的程序设计风格,下面描述正确的是______。
A. 程序应简单、清晰、可读性好 B. 符号名的命名要符合语法
C. 充分考虑程序的执行效率 D. 程序的注释可有可无
31.下面对对象概念描述错误的是______。
A. 任何对象都必须有继承性 B. 对象是属性和方法的封装体
C. 对象间的通讯靠消息传递 D. 操作是对象的动态性属性
32.在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送______。
A. 调用语句 B. 命令 C. 口令 D. 消息
33.面向对象的设计方法与传统的的面向过程的方法有本质不同,它的基本原理是______。
《计算机软件技术基础》复习题(含答案)

《计算机软件技术基础》复习题1.线性表的链式存储结构与顺序存储结构相比优点是 CD 。
A. 所有的操作算法实现简单B. 便于随机存取A. 表元素B. 字符D. 数据项E. 信息项3.若长度为n 的线性表采用顺序存储结构,在其第I 个位置插入一个新元素的算法的时间复杂度为 C 。
(1≤I ≤n+1)A. O(0)B. O(1)C. O(n)D. O(n 2) 4.设A 是一个线性表(a 1,a 2,…,a n ),采用顺序存储结构,则在等概率的前提下,平均每插入一个元素需要移动的元素个数为 B ,平均每删除一个元素需要移动的元素个数为A ;若元素插在a i 与a i+1之间(0≤I ≤n-1)的概率为)1()(2+-n n i n ,则平均每插入一个元素所要移动的元素个数为 C ; A. 21-n B. 2n C. 312+n D. 413+n 5.下列函数中,按它们在∞→n 时的无穷大阶数,最大的是 D 。
A. log nB. nlog nC. 2n/2D. n!6.A. s->next=p+1; p->next=s;B. (*p).next=s; (*s).next=(*p).next;C. s->next=p->next; p->next=s->next;D. s->next=p->next; p->next=s;7.将两个各有n 个元素的有序表归并为一个有序表时,其最少的比较次数是 A 。
A. nB. 2n-1C. n-1D. 2n8.下面的程序段是合并两个无头结点链表(ha 和 hb)为一个无头结点链表ha 的过程,作为参数的两个链表都是按结点的data 域由大到小链接的。
合并后新链表的结点仍按此方式链接。
请填写下述空框,使程序能正确运行。
#define NULL 0typedef struct node{int data;struct node *next;}node, linklisttype;void combine(linklisttype *ha, linklisttype *hb){linklisttype *h, *p;h = (linklisttype *)malloc(sizeof(linklisttype));h->next = NULL;p = h;while(ha != NULL && hb != NULL)if(ha->data>=hb->data){ /*较大的元素先插入*/p->next = (1) ;p = (2) ;(3) ;}else{p->next = (4) ;p = (5) ;(6) ;}if(ha==NULL) (7) ;if(hb==NULL) (8) ;ha = h->next;free(h);}参考答案:(1) ha (2) p->next (3) ha=ha->next(4) hb (5) p->next (6) hb=hb->next(7) p->next=hb (8) p->next=ha9.如果表A中所有元素(a1,a2,…,a n)与表B的一个顺序子表(b k,b k+1,…b k+n-1)完全相同(即a1=b k,a2=b k+1,…a n=b k+n-1),则称表A包含在表B中。
《计算机软件技术基础》复习答案.docx

《计算机软件技术基础》复习题——答案1.线性表的链式存储结构与顺序存储结构相比优点是一CD2. 线性表是具有n 个C 的有限序列。
A.表元索B.字符C.数据元索E.信息项3. 若长度为n 的线性表采用顺序存储结构,在其第I 个位置插入一个新元索的算法的时间复杂度为 C (lWIWn+1)A. 0(0)B. 0(1)C. 0(n)D. 0(n 2)4. 设A 是一个线性表(g 弧…,弘),采用顺序存储结构,则在等概率的前提下,平均每插入一个元素需耍移动的元素个数为 B ,平均每删除一•个元素需要移动的元索个数为A ;若元索插在eh 与茹】之间(OWTWn-1)的概率为"匸",则平均每插入一个 n(n +1)元素所要移动的元索个数为C5•下列函数屮,按它们在 ms 时的无穷人阶数,最大的是—D6•将卜•图所示的s 所指结点加到p 所指的结点之后,其语句应为:DA.所有的操作算法实现简单B.便于随机存取C.便于插入和删除 1).便于利川零散的存储器空间D.数据项C.2n + \D ・3n +14A . C. 10g/7n/2 B. nlog/7 D. n! nextnextnextA. s->next 二p+1; p->next 二s;B. (*p). next 二s; (*s) • next= (*p)•next;C. s->next 二p->next; p->next 二s->next; D ・ s->next 二p->next; p->next.=s;7. 将两个齐有n 个元索的有序表归并为一个有序表吋,其最少的比较次数是_ A 。
A. n B. 2n~l C. n~lD. 2n8. 卜面的程序段是合并两个无头结点链表(ha 和hb)为一个无头结点链表ha 的过程,作为 参数的两个链表都是按结点的data 域由人到小链接的。
计算机软件技术基础教程(第二版)习题及答案

第1章习题部分答案1. 操作系统的发展分为那几个阶段?解:操作系统的发展经历了三个阶段:操作系统的酝酿阶段、操作系统的形成阶段、操作系统的理论化和标准化阶段。
2. 计算机软件技术开发系统包括那几个阶段?解:计算机软件开发系统的发展经历了四个阶段:机器语言阶段、汇编语言阶段、高级语言阶段、面向对象语言和可视化语言阶段。
3. 计算机软件技术的主要范畴是什么?解:计算机软件技术的主要范畴包括软件工程技术、程序设计技术、软件工具环境技术、系统软件技术、数据库技术、实时软件技术、网络软件技术、与实际工作相关的软件技术等八个领域的内容。
4. 从软件技术的发展现状来看有哪些值得我们注意的问题?解:从软件技术的发展现状来看有以下几个值得我们注意的问题:1)软件危机2)软件技术标准,软件版权和软件价值评估3)软件技术的基础研究。
1第2章习题部分答案1. 什么是软件危机?软件危机的表现有哪些?解:软件开发技术的进步为能满足发展的要求,在软件开发中遇到的问题找不到解决的方法,问题积累起来形成了尖锐的矛盾,导致了软件危机。
2. 软件危机产生的原因是什么?解:造成软件危机的原因是由于软件产品本身的特点以及开发软件的方式、方法、技术和人员引起的。
1)软件规模越来越大,结构越来越复杂。
2)软件开发管理困难而复杂。
3)软件开发费用不断增加。
4)软件开发技术落后。
5)生产方式落后。
6)开发工具落后,生产率提高缓慢。
3. 常见的软件过程模型有哪些?解:常见的软件过程模型有瀑布模型、增量模型、演化过程模型、敏捷开发4. 如何对软件质量进行评价?解:软件质量的评价主要围绕可维护性、可靠性、可理解性和效率这几个方面进行。
2第3章习题部分答案1. 软件可行性研究的目的是什么?软件可行性研究的任务又是什么?解:软件可行性研究的目的就是用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得去开发。
可行性研究的任务首先需要进行概要的分析研究,初步确定项目的规模和目标,确定项目的约束和限制,把他们清楚地列举出来。
计算机软件技术基础考试答案

1数据库的三级模式和两级映像体系结构中,模式/内模式映像存在于概念级和内部级之间,用于定义概念模式和内模式间的对应性,其主要作用是什么。
答:作用是保证了数据与程序的物理独立性,模式/内模式之间的映像是数据的全局逻辑结构和数据的存储结构之间的映像,当数据库的存储结构发生了变化,由于模式/内模式之间的映像使数据的逻辑结构可以保持不变,因此应用程序可以不必修改。
2简述逻辑数据的独立性答:逻辑数据独立性是指应用程序与数据库的逻辑结构之间的相互独立性。
当数据的逻辑结构改变时,通过修改外模式——模式映像,保持数据的局部逻辑结构不变,应用程序是依据数据的局部逻辑结构编写的,所以应用程序不必修改。
即模式变,应用程序不变。
3何谓算法?它与程序有何区别?答:算法是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。
算法可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤。
它与程序的区别⑴一个程序不一定满足有穷性,但算法是有穷性的。
⑵程序中指令必须是机器可以执行的,而算法中的指令则无此限制。
⑶算法代表了对问题的解,而程序是算法在机器上的特定实现。
4试说明栈和队列的异同。
答:相同:从数据结构的角度看,都是线性结构,都可以通过顺序表,列表实现。
不同点:⑴队列先进先出,栈先进后出。
⑵对插入和删除操作的"限定"。
栈是限定只能在表的一端进行插入和删除操作的线性表。
队列是限定只能在表的一端进行插入和在另一端进行删除操作的线性表。
⑶遍历数据速度不同。
栈只能从头部取数据也就最先放入的需要遍历整个栈最后才能取出来,而且在遍历数据的时候还得为数据开辟临时空间,保持数据在遍历前的一致性队列怎不同,他基于地址指针进行遍历,而且可以从头或尾部开始遍历,但不能同时遍历,无需开辟临时空间,因为在遍历的过程中不影像数据结构,速度要快的多。
5何谓进程?请图示具有基本进程状态的状态转移图,并指出转移原因。
计算机软件技术基础课后答案

计算机软件技术基础课后答案【篇一:《计算机软件技术基础》复习题(含答案)】txt>1.线性表的链式存储结构与顺序存储结构相比优点是a. 所有的操作算法实现简单c. 便于插入和删除 b. 便于随机存取d. 便于利用零散的存储器空间2.线性表是具有n个的有限序列。
a. 表元素d. 数据项 b. 字符 c. 数据元素e. 信息项3.若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为c 。
(1≤i≤n+1)a. o(0)b. o(1)2c. o(n) d. o(n)4.设a是一个线性表(a1,a2,?,an),采用顺序存储结构,则在等概率的前提下,平均每插入一个元素需要移动的元素个数为 b,平均每删除一个元素需要移动的元素个数为 a;若元素插在ai与ai+1之间(0≤i≤n-1)的概率为元素所要移动的元素个数为 c; 2(n?i),则平均每插入一个n(n?1) n?1 22n?1c.3a. n 23n?1d. 4b.5.下列函数中,按它们在n??时的无穷大阶数,最大的是 d。
a. lognb. nlognn/2c. 2 d. n!6.a. s-next=p+1; p-next=s;b. (*p).next=s; (*s).next=(*p).next;c. s-next=p-next; p-next=s-next;d. s-next=p-next; p-next=s;7.将两个各有n个元素的有序表归并为一个有序表时,其最少的比较次数是 a 。
a. nc. n-1b. 2n-1 d. 2n13.用单链表表示的链式队列的队头在链表的a 位置。
a. 链头b. 链尾c. 链中14.若用单链表表示队列,则应该选用。
a. 带尾指针的非循环链表b. 带尾指针的循环链表c. 带头指针的非循环链表d. 带头指针的循环链表15.在解决计算机主机与打印机之间速度不匹配问题时,通常设置一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机则从该缓冲区中取出数据打印,先放入打印缓冲区的数据先被打印。
《计算机软件技术基础》答卷纸

《计算机软件技术基础》参考答案及评分标准一、单项选择题(每空1分,共50分)评分标准:每空1分,错选、多选、漏选均不得分。
51.(本题共10分)评分标准:每空2分,如果答案比较接近正确答案给1分。
52.(本题共10分)缺页中断率f= 9/12=75%缺页中断率f= 7/12=58.3%评分标准:每小题5分,共10分。
其中缺页中断行1分,每出现一处错误扣0.5分,出现两处或以上错误,本 项得0分。
中断率计算1分,写对公式得0.5分。
如果未写计算公式结果正确,不扣分; 如果未写公式但结果有误,则本项得0分。
页面调试3分。
每当有一列中有错误则扣0・5分,至本项扣至0分为止。
53 .(本题共10分)对11个元素进行折半查找的判定树如下图所示:第i 层的元素的查找长度为i,所以平均查找长度为jffi = ^Q+2x2÷3x4⅞4x <) = 3LRU评分标准:判定树6分,当有一个元素的位置错误时扣0・5分。
平均查找长度4分。
如果直接写结果,则结果正确得4分,结果为5、5.5 或6得2分,结果为2至4间某数得1分。
如果写有过程,正确指明查找每个元素的概率得1分,给出每个元素的查找长度得1分,计算公式正确得1分,结果正确得1分。
54.(本题共10分)进行堆排序的过程如下:初始记录: 46 24 53 34 36 58 86 75 37 44第1趟排序: 36 75 58 37 44 46 53 34 24 [86]第2趟排序: 24 44 58 37 36 46 53 34 [75 86]第3趟排序: 34 44 53 37 36 46 24 [58 75 86]第4趟排序: 24 44 46 37 36 34 [53 58 75 86]第5趟排序: 24 44 34 37 36 [46 53 58 75 86]第6趟排序: 36 37 34 24 [44 46 53 58 75 86]第7趟排序: 24 36 34 E37 44 46 53 58 75 86]第8趟排序: 34 24 E36 37 44 46 53 58 75 86]第9趟排序: 24 E34 36 37 44 46 53 58 75 86]即最终排序结果为:24 34 36 37 44 46 53 58 75 86o评分标准:每趟排序结果和最终排序结果正确得1分,如果该行有错,则出现一处错误扣0.5分,出现两处或以上错误本行得。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《计算机软件技术基础》试题1.线性表的链式存储结构与顺序存储结构相比优点是 CD 。
A. 所有的操作算法实现简单 B. 便于随机存取C. 便于插入和删除D. 便于利用零散的存储器空间2.线性表是具有n 个 C 的有限序列。
A. 表元素 B. 字符 C. 数据元素 D. 数据项E. 信息项3.若长度为n 的线性表采用顺序存储结构,在其第I 个位置插入一个新元素的算法的时间复杂度为 C 。
(1≤I ≤n+1) A. O(0) B. O(1) C. O(n)D. O(n 2)4.设A 是一个线性表(a 1,a 2,…,a n ),采用顺序存储结构,则在等概率的前提下,平均每插入一个元素需要移动的元素个数为 B ,平均每删除一个元素需要移动的元素个数为 A ;若元素插在a i 与a i+1之间(0≤I ≤n-1)的概率为)1()(2+-n n i n ,则平均每插入一个元素所要移动的元素个数为 C ;A.21-n B.2n C. 312+nD. 413+n5.下列函数中,按它们在∞→n 时的无穷大阶数,最大的是 D 。
A. log n B. nlog n C. 2n/2D. n!6.将下图所示的s所指结点加到p所指的结点之后,其语句应为: D 。
A. s->next=p+1; p->next=s;B. (*p).next=s; (*s).next=(*p).next;C. s->next=p->next; p->next=s->next;D. s->next=p->next; p->next=s;7.将两个各有n个元素的有序表归并为一个有序表时,其最少的比较次数是 A 。
A. nB. 2n-1C. n-1D. 2n8.下面的程序段是合并两个无头结点链表(ha和 hb)为一个无头结点链表ha的过程,作为参数的两个链表都是按结点的data域由大到小链接的。
合并后新链表的结点仍按此方式链接。
请填写下述空框,使程序能正确运行。
1.#define NULL 0typedef struct node{int data;struct node *next;}node, linklisttype;void combine(linklisttype *ha, linklisttype *hb){linklisttype *h, *p;h = (linklisttype *)malloc(sizeof(linklisttype));h->next = NULL;p = h;while(ha != NULL && hb != NULL)if(ha->data>=hb->data){ /*较大的元素先插入*/p->next = (1) ;p = (2) ;(3) ;}else{p->next = (4) ;p = (5) ;(6) ;}if(ha==NULL) (7) ;if(hb==NULL) (8) ;ha = h->next;free(h);}参考答案:(1) ha (2) p->next (3) ha=ha->next(4) hb (5) p->next (6) hb=hb->next(7) p->next=hb (8) p->next=ha9.如果表A中所有元素(a1,a2,…,a n)与表B的一个顺序子表(b k,b k+1,…b k+n-1)完全相同(即a1=b k,a2=b k+1,…a n=b k+n-1),则称表A包含在表B中。
设ha,hb为带头结点的单链表,分别表示有序表A和B,下面的函数用于判别表A是否包含在表B中,若是,则返回true,否则返回false。
(提示:用递归实现)#define true 1#define false 0#define NULL 0typedef struct node{int data;struct node *next;}node, linklisttype;int inclusion(linklisttype *ha, linklisttype *hb){linklisttype *pa, *pb;pa = ha->next;pb = hb->next;(1) ;while( (2) )if(pa->data=pb->data) (3) ;else (4) ;(5) ;}参考答案:(1) if(pa==NULL) return(true)(2) pb!=NULL && pa->data>=pb->data(3) return(inclusion(pa, pb))(4) pb = pb->next;(5) return(false)10.在本题的程序中,函数create_link_list(n)建立一个具有n个结点的循环链表;函数josephus(n,I,m)对由create_link_list(n)所建立的具有n个结点的循环链表按一定的次序逐个输出,并删除链表中的所有结点。
参数n(n>0)指明循环链表的结点个数,参数I(1≤I≤n)指明起始结点,参数m(m>0是步长),指明从起始结点或前次被删除并输出的结点之后的第m个结点作为本次被输出并删除的结点。
例如,对于下图所示的具有6个结点的循环链表,在调用josephus(6,3,2)后,将输出5,1,3,6,4,2。
请在空框处填上适当内容,每框只填一个语句。
#define NULL 0typedef struct node{int data;struct node *next;}node, linklisttype;linklisttype *create_link_list(int n){linklisttype *head, *p, *q;int I;head = NULL;if(n>0){head = (linklisttype *)malloc(sizeof(linklisttype));p = head;for(I=1;I<=n-1;I++){ /*此循环用于建立一个链表,链表的内容从1至n-1*/ p->data = I;q = (linklisttype *)malloc(sizeof(linklistttype));(1) ;(2) ;}p->data = n;(3) ; /*建立从尾链到首的环形结构*/}return(head);}void Josephus(int n, int j, int m){linklisttype *p, *q;int j;p = create_link_list(n);for(;I>1;I--) p = p->next;(4) ;while(j<n){for(I=1;I<=m-1;I++) p = p->next;(5) ;printf(“%8d”,q->data);(6) ;free(q);j=j+1;}}参考答案:(1) p->next = q;(2) p = q;(3) p->next = head(4) j=0(5) q=p->next;(6) p->next = q->next11.在下列程序中,函数difference(A,B)用于求两集合之差C=A-B,即当且仅当e是A中的一个元素,且不是B中的元素时,e是C中的一个元素。
集合用有序链表实现,用一个空链表表示一个空集合,表示非空集合的链表根据元素之值按递增排列,执行C=A-B之后,表示集合A和B的链表不变,若结果集合C非空,则表示它的链表应根据元素之值按递增序排列。
函数append()用于在链表中添加结点。
#include <>#define NULL 0typedef struct node{int data;struct node *next;}NODE;NODE *append(NODE *last, int x){last->next=(NODE *)malloc(sizeof(NODE));last->next->data=x;return(last->next);}NODE *difference(NODE *A ,NODE *B){NODE *C,*last;C=last=(NODE *)malloc(sizeof(NODE));while( (1) )if(A->data < B->data){last=append(last,A->data);A=A->next;}elseif( (2) ){A=A->next;B=B->next;}else(3) ;while( (4) ){last=append(last,A->data);A=A->next;}(5) ;last=C;C=C->next;free(last);return(C);}参考答案:(1) A!=NULL & B!=NULL(2) A->data==B->data(3) B=B->next;(4) A!=NULL(5) last->next=NULL;12.阅读以下算法,填充空格,使其成为完整的算法。
其功能是在一个非递减的顺序存储线性表中(从下标1处开始存储),删除所有值相等的多余元素。
#define MAXSIZE 30typedef struct{int elem[MAXSIZE];int length;/*表长*/}sqlisttype;void exam21(sqlisttype *L){int I,j;I=2,j=1;while( (1) ){if(L->elem[I]<>L->elem[j]){(2) ;(3) ;}I++;}(4) ;}参考答案:(1) i<=L->length(2)(3) j++;(4)13.用单链表表示的链式队列的队头在链表的 A 位置。
A. 链头B. 链尾C. 链中14.若用单链表表示队列,则应该选用 B 。
A. 带尾指针的非循环链表B. 带尾指针的循环链表C. 带头指针的非循环链表D. 带头指针的循环链表15.在解决计算机主机与打印机之间速度不匹配问题时,通常设置一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机则从该缓冲区中取出数据打印,先放入打印缓冲区的数据先被打印。