第6章

程序设计与算法分析

习题(答案)

一、选择题

1. A

2. D

3. A

4. C

5. D

6. B

7. B

8. D

9. ABCD

10. D

11. C

12. A

13. B

14. D

15. A

二、简答题

1.简述程序的概念。

答:一个程序就是能够实现特定功能的一组指令序列的集合。或者表示为:程序=算法+数据结构。

2.结构化程序设计的思想是什么?

答:结构化程序设计的基本思想就是采用自上而下、逐步求精的设计方法和单入口单出口的控制结构。

3.结构化程序设计的原则是什么?

答:结构化程序设计的原则是:

(1) 使用顺序、选择、循环3种基本控制结构表示程序逻辑。

(2)程序语句组织成容易识别的语句模块,每个模块都是单入口、单出口。

(3)严格控制GOTO语句的使用。

4.结构化程序设计语言采用自顶向下的方法进行程序设计的特点是什么?

答:利用结构化程序设计语言采用自上而下的方法进行程序设计的特点是:

(1) 问题分解成子问题的结构必须与3种基本程序结构之一相对应。

(2) 问题的划分决定了程序的结构。一方面,子问题的划分决定了这一层次的程序是3种基本结构中的哪一种结构;另一方面,一个问题该如何划分成子问题是灵活的,并不是只有一种分解方法。分解的好坏就决定了设计的质量,也决定了程序的不同结构。

(3) 问题的边界应该清晰明确。只有这样才能精确地解决这些子问题,否则就会模棱两可,无从下手。

5.简述面向对象和结构化程序设计的区别。

答:面向对象是从本质上区别于传统的结构化方法的一种新方法、新思路。它吸收了结构化程序设计的全部优点,同时又考虑到现实世界与计算机之间的关系,认为现实世界是由一系列彼此相关并且能够相互通信的实体组成,这些实体就是面向对象方法中的对象,每个对象都有自己的自然属性和行为特征,而一类相似对象的共性的抽象描述,就是面向对象方法中的核心——类。

6.什么是数据结构?数据的物理结构有哪些?

答:数据结构是指数据元素之间的相互关系的集合,包括了数据的逻辑结构、物理结构以及数据的运算。

数据的物理结构主要有四种,分别是顺序结构、链表结构、索引结构及散列结构。

(1) 顺序结构:是把所有元素存放在一片连续的存储单元中,逻辑上相邻的元素存储在物理位置相邻的存储单元中,由此得到的存储表示称为顺序存储结构。

(2) 链表结构:对逻辑上相邻的元素不要求其物理位置相邻,元素间的逻辑关系通过附设的指针域来表示,由此得到的存储表示称为链式存储结构。

(3) 索引结构:每个数据结构建立索引表,每个数据元素占用表中的一项,每个表项通常包含关键字和地址指针。其中的关键字是能够惟一标志一个数据元素的数据项。

(4) 散列结构:通过构造相应的散列函数,由散列函数的值来确定元素存放的地址。

7.什么是算法,算法的特性有哪些?

答:算法(Algorithm)是一组明确的、可以执行的步骤的有序集合,它在有限的时间内终止并产生结果。算法的特性有:

(1) 有穷性(可终止性):一个算法必须在有限个操作步骤内以及合理的有限时间内执行完成。

(2) 确定性:算法中的每一个操作步骤都必须有明确的含义,不允许存在二义性。

(3) 有效性(可执行性):算法中描述的操作步骤都是可执行的,并能最终得到确定的结果。

(4) 输入及输出:一个算法应该有零个或多个输入数据、有1个或多个输出数据。

8.什么是算法的时间复杂度和空间复杂度,如何表示?

答:时间复杂度是与求解问题规模、算法输入相关的函数,该函数表示算法运行所花费的时间。记为:T(n),其中,n代表求解问题的规模。

算法的空间复杂度(Space complexity)度量算法的空间复杂性、即执行算法的程序在计算机中运行所占用空间的大小。简单讲,空间复杂度也是与求解问题规模、算法输入相关的函数。记为:S(n),其中,n代表求解问题的规模。

时间复杂度和空间复杂度同样,引入符号“O”来表示T(n)、S(n)与求解问题规模n之间的数量级关系。

9.用图示法表示语言处理的过程。

答:语言处理的过程如图所示:

10.简述编译程序的概念。

编译程序是把高级语言程序(源程序)作为一个整体来处理,在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),编译后与系统提供的代码库链接,形成—个完整的可执行的机器语言程序(目标程序代码)。

11.用图示法表示编译程序的框架。

答:编译程序的框架如图所示:

12.词法分析的任务是什么?

答:作为编译过程的第一个阶段,其任务是从左到右一个字符,一个字符地对源程序进行扫描,读入源程序,对构成源程序的字符流进行扫描和分解,通过词法分析从而识别出一个个单词(也称单词符号或符号)。

13.语法分析的任务是什么?

答:语法分析是编译过程的第二个阶段,任务是在词法分析的基础上将单词序列分解成各类语法短语,如“程序”、“语句”、“表达式”等等。

14.简述语义处理的功能。

答:编译过程中的语义处理实现两个功能:

(1) 审查每个语法结构的静态语义,即验证语法结构合法的程序是否真正有意义,有时把这个工作称为静态语义分析或静态审查。

(2)

如果静态语义正确,则语义处理要执行真正的翻译,要么生成程序的一种中间表示形式(中间代码),要么生成实际的目标代码。

15.简述中间代码的概念。

答:所谓“中间代码”是一种结构简单、含义明确的记号系统,这种记号系统可以设计为多种多样的形式,重要的设计原则为两点:一是容易生成;二是容易将它翻译成目标代码。

16.目标代码生成阶段的任务是什么?

答:目标代码生成阶段的任务是把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。这是编译的最后阶段,它的工作与硬件系统结构和指令含义有关,这个阶段的工作很复杂,涉及到硬件系统功能部件的运用、机器指令的选择、各种数据类型变量的存储空间分配以及寄存器和后援寄存器的调度等。

三、讨论题

1.作为一个计算机专业的学生,程序设计是大学学习的重要内容之一,程序设计的内容很多,语言的更新也很快,如何才能更好地掌握程序设计?如何利用语言编程?怎样才能克服害怕编程的思想?

答案略。

2.算法是程序设计的基础,没有好的算法,就不可能写出好的程序,但是,学习算法涉及到很多交叉学科的知识,怎样才能把这些知识融会贯通,写出优秀的程序?

答案略。

计算机科学导论1 7单元答案,《计算机科学导论》课后习题答案相关推荐

  1. 软件测试黑马程序员课后答案_软件测试课后习题答案

    软件测试课后习题答案 [篇一:软件测试基础习题及答案] > 软件测试是一个过程或者一系列过程,用来确认计算和代码完成了 其应该完成的功能,并且不执行其不应该有的操作. 2 .软件测试的目标是什么 ...

  2. mysql实验6答案_SQL 2008课后习题答案 实验6

    SQL 2008课后习题答案 1.建立索引 <1>对YGGL数据库的Employees表中的DepartmentID列建立索引 use YGGL go create index depar ...

  3. 上海交通大学python实践教程答案_python实践教程答案(求python课后习题答案)

    这题的答案(python知识) S = [] while 1: string = input("Please input your numbers:") if string ==  ...

  4. linux基础教程课后答案,Linux教材课后习题答案.pdf

    Linux教材课后习题答案 1.5 练习题 一.选择题 1. Linux 最早是由计算机爱好者 B 开发的. A. Richard Petersen B. Linus Torvalds C. Rob ...

  5. 工程经济学计算机答案,工程经济学课后习题答案计算题刘晓君答案

    1.9现有一项目,其现金流量为:第一年末支付1000万元,第二年末支付1500万元,第 三年收益200万元,第四年收益300万元,第五年收益400万元,第六年到第十年每年收 益500万元,第十一年收益 ...

  6. 单片机胡汉才第四版答案_单片机课后习题答案 胡汉才编

    单片机课后标准答案详解 3.20.1.使20H单元中数的高两位变为0,其余位不变 2.使20H单元中数的高两位变为1,其余位不变 3.使20H单元中数的高两位变反,其余位不变 4.使20H单元中数的所 ...

  7. 计算机网络安全教程答案,计算机网络安全课后习题答案.doc

    文档介绍: 第一章绪论 P2计算机网络安全课后****题答案1计算机网络安全(04751)第一章绪论 P2第二章物理安全 P6第三章信息加密与 P9第四章防火墙技术 P14第五章入侵检测技术 P18第 ...

  8. 计算机系统结构第二版习题答案,计算机系统结构课后习题答案(第2版).docx

    习题一 1.解释下列术语 计算机系统的外特性:通常所讲的计算机系统结构的外特性是指机器语言程序员或编译程序编写者所看到的外特性,即由他们所看到的计算机的基本属性(概念性结构和功能特性). 计算机系统的 ...

  9. 计算机组成原课后答案,计算机组成原理课后习题答案解析

    完美WORD格式 (2)仅(K+1)取指与K执行重叠. (3)仅(K+2)取指.(K+1)译码.K执行重叠. 6.20 在图6-53的流水线上处理下述程序段时会出现什么问题?如何解决这些问题? (1) ...

  10. 微型计算机原理_课后答案,微机原理课后习题答案

    第一章 学习指导: 1.掌握十六进制.二进制.BCD(十进制数).ASCII码 2.掌握有符号数(补码.原码).无符号数计算机的表示方法以及表示范围 3.掌握补码运算 4.了解计算机基本组成及工作原理 ...

最新文章

  1. 求难、求拙、求慢、求少
  2. python降级-关于卸载:如何从Python 3.2降级到2.7?
  3. 树结构练习——排序二叉树的中序遍历(二叉搜索树)
  4. 《深入理解java虚拟机》笔记1——Java内存区域与Java对象
  5. carsim学习笔记1—界面工具的含义
  6. leetcode15 3Sum 从数组中找到三个整数,它们的和为0
  7. [Vue warn]: Failed to mount component: template or render function not defined. (found in root insta
  8. Qt4_实现自定义模型
  9. [翻译]超炫列表动画的实现
  10. mybatis中的事务
  11. ZYT and LBC
  12. [live555] 谈一谈 SERVER RTP+NALU 分包过程
  13. c++——dynamic_cast的使用
  14. web前端开发工程师是做什么工作的?
  15. #数据结构与算法 第一小题 学生成绩档案管理系统
  16. educoder C++实战训练
  17. 本站视频相关的C++新经典系列书籍出版
  18. 在1-10中选择一个数,输出x+xx+xxx+xxx....x之和,如:数字为2,则2+22=24
  19. 学生信息管理系统(php+mysql)
  20. USB的四种传输类型

热门文章

  1. 浅谈程序员数学修养:国际公司为什么用算术题招聘测试
  2. 《高绩效团队之管理者心理资本开发》
  3. 解题报告 逃跑未遂
  4. MySQL设置超级用户权限
  5. word文档,两个段落之间的间距大于行距很多,怎么设置?
  6. 【Spark+Hadoop+Hive+MySQL+Presto+SpringBoot+Echarts】基于大数据技术的用户日志数据分析及可视化平台搭建项目
  7. Spring MVC(一)
  8. [Datasheet] PHY LAN8720网络芯片解读
  9. 通过爬取微博评论,发现好看的小姐姐...
  10. python粒子群喷发_Python基于粒子群优化的投资组合优化研究