一、填空
1、软件详细设计的目标不仅是逻辑上正确地实现(每个模块的功能),还应使设计出的处理过程(清晰易懂)。结构化程序设计是实现该目标的关键技术之一;它指导人们用良好的思想方法开发易于(理解)、易于(验证)的程序。
2、结构化程序设计方法的基本要点是:①采用(自顶向下、逐步细化)的程序设计方法;②使用(三种基本控制结构)构造程序,避免GOTO语句的使用;
③(数据结构合理化)。
3、任何程序都可由(顺序)、(选择)和(重复)等三种基本控制结构构造。这三种基本控制结构的共同点是(单入口)和(单出口)。
4、程序设计风格是人们编写程序的(特点)、(习惯)和(逻辑思路)等。
5、语句构造的原则是(简单直接),不能因为追求效率而使代码(复杂化)。
6、追求效率建立在不损害(程序可读性)或(可靠性)的基础上。
7、提高程序效率的根本途径在于选择良好的(设计方法)、良好的(数据结构和算法),而不是靠编程时对语句进行调整。
8、为开发一个特定的项目选择程序设计语言时,必须从(心理特性)、(工程特性)和技术性能特性等几方面考虑。
9、通常考虑选用程序设计语言的因素有 (项目的应用领域)、(软件开发的方法)、(软件执行的环境)、算法和数据结构的复杂性和软件开发人员的知识。
二、单项选择题
1、在编制程序时应采纳的原则之一是(  D    )。
A. 不限制 goto语句的使用
B. 减少或取消注解行
C. 程序越短越好
D. 程序结构应有助于读者理解
2、程序控制一般分为( B  )、分支和重复等三种基本控制结构。
A. 分块
B. 顺序
C. 迭代
D. 循环
3、以下说法正确的是(  B  )。
A. 所有改变循环条件的成分都在循环体外
B. 在直到型循环中,循环体至少要执行一次
C. 在当型循环中,循环体至少要执行一次
D. 基本程序结构不允许嵌套
4、源程序文档化要求在每个模块的首部加序言性注释。该注释的内容不应有(  B  )。
A. 模块的功能
B. 语句的功能
C. 模块的接口
D. 扇入数
5、功能性注释的作用是解释下面的语句(  B    )。
A. 怎么做
B. 做什么
C. 何时做
D. 为何做
6、对于不好的程序,应当(  C  ).
A. 打补丁
B. 修改错误
C. 重新编写
D. 原封不动
7、程序设计语言的心理特性在语言中表现不应包括(  C    )。
A. 二义性
B. 简洁性
C. 保密性
D. 传统性
8、程序设计语言的工程特性之一表现在(  A  )。
A. 软件的可复用性
B. 数据结构的可描述性
C. 抽象类型的可描述性
D. 数据库的易操作性
9、程序设计语言的技术特性不应包括(  D  )。
A. 数据结构的可描述性
B. 抽象类型的可描述性
C. 数据库的易操作性
D. 软件的可移植性
10、Lipow证明了:当源程序少于100个语句时,每行代码的出错率随程序行数的增长(  A    )。
A. 呈线性相关关系
B. 呈指数方式增长
C. 呈对数方式增长
D. 没有一定规律
三、选择题
1、从下列关于模块化程序设计的叙述中选出5条正确的叙述。
(1) 程序设计比较方便,但比较难以维护。
(2) 便于由多个人分工编制大型程序。
(3) 软件的功能便于扩充。
(4) 程序易于理解,也便于排错。
(5) 在主存储器能够容纳得下的前提下,应使模块尽可能大,以便减少模块的个数。(6) 模块之间的接口叫做数据文件。
(7) 只要模块之间的接口关系不变,各模块内部实现细节的修改将不会影响别的模块。
(8) 模块间的单向调用关系叫做模块的层次结构。
(9) 模块越小,模块化的优点越明显。一般来说,模块的大小都在10行以下。
正确的叙述有(2)、(3)、(4)、(7)、(8)。
2、从下列叙述中选出5条符合程序设计风格指导原则的叙述。
(1) 嵌套的重数应加以限制。
(2) 尽量多使用临时变量。
(3) 不滥用语言特。do while语句流程图
(4) 不用可以省略的括号。
(5) 使用有意义的变量名。
(6) 应尽可能把程序编得短些。
(7) 把常见的局部优化工作留给编译程序去做。
(8) 注解越少越好。
(9) 程序的格式应有助于读者理解程序。
(10) 应尽可能多用GOTO语句。
(1)、(3)、(5)、(7)、(9)是正确的。
3、从下面关于程序编制的叙述中,选出三条正确的叙述。
(1) 在编制程序之前,首先必须仔细阅读给定的程序说明书。然后,必须如实地依照说明书编写程序。说明书中常会有含糊不清或难以理解的地方。程序员在作业时应该对这些地方作出适当的解释。
(2) 在着手编制程序时,重要的是采用既能使程序正确地按设计说明书进行处理,又易于出错的编写方法。
(3) 在编制程序时,首先应该对程序的结构充分考虑,不要急于开始编码,而要象写软件文档那样,很好地琢磨程序具有什么样的功能,这些功能如何安排等等。
(4) 考虑到以后的程序变更,为程序编写完整的说明书是一项很重要的工作。只要有了完整的程序说明书,即使程序的编写形式难以让他人看懂也没有什么关系。
(5) 编制程序时不可缺少的条件是,程序的输入和输出数据的格式都应确定。其他各项规定都是附带的,无足轻重。
(6) 作为一个好的程序,不仅处理速度要快,而且易读易修改等等也都是重要的条件。为了能得到这样的程序,不仅要熟悉程序设计语言的语法,还要注意采用适当的规程和单纯的表现方法,注意使整个程序的结构简洁。
(1)、(4)、(6) 是正确的。
4、从供选择的答案中选出适当的字句填入下面关于程序生产率的描述中的(    )内。
(1) 1960年底Dijkstra提倡的 (  A  ⑤) 是一种有效的提高程序设计效率的方法。
(2) Dijkstra为了使程序结构易于理解,把基本控制结构限于顺序、(  B ② )、(  C ③ )3种,应避免使用(  D  ①)。
(3) (  A  ⑤)不仅提高程序设计的生产率,同时也容易进行程序的(  E  ③)。
供选择的答案:
A. ①标准化程序设计②模块化程序设计③多道程序设计④宏语言⑤结构化程序设计⑥汇编语言⑦表格处理语言B~C.  ①分支②选择③重复④计算⑤输入输出
D. ① GOTO语句② DO语句③ IF语句④ REPEAT语句
E. ①设计②调试③维护④编码
三、简答题
1、试说明下面的两个程序段的功能是什么?可否用另一些等效的程序段来代替它,以提高其可读性。
(1) A[I] = A[I] + A[T]; (2)  for ( i = 1; i <= n; i ++ )
A[T] = A[I] - A[T]; for ( j = 1; j <= n; j ++ )
A[I] = A[I] - A[T]; V[i][j] = ( i / j ) * ( j / i );
(1) 的功能是对换A[I] 与A[T] 的内容。等效的程序段可以是:
TEMP = A[T];  A[T] = A[I];  A[I] = TEMP;
(2) 的功能是建立一个单位矩阵V。等效的程序段可以是:
for ( i = 1;  i <= n;  i ++ )
for ( j = 1;  j <= n;  j ++ )
if ( i == j )  V[i][j] = 1;
else V[i][j] = 0;
2、设下图给出的程序流程图代表一个非结构化的程序,试问:
(1) 为什么说它是一个非结构化的?
(2) 设计一个等价的使用附加标志变量flag的结构化程序。
(3) 设计一个使用break(用于代替goto)的程序。
(1) 它是一个单入口、两出口的结构,所以是一个非结构化的程序。
(2) 等价的结构化程序:
enum Boolean { false, true }
Boolean flag = true;
while ( P && flag ) {
do G;
if ( !Q ) flag = false;
}
(3) 使用break的程序
while ( P ) {
do G;
if ( !Q ) break;
}
3、有一种循环结构,叫做N+1/2循环。其流程图如下所示。这种控制结构不属于基本控制结构:它既不是先判断型循环,又不是后判断型循环。试修改此流程图,将它改为用基本控制结构表示的等效的流程图。
等效的控制流程图如下图中 (a) 所示。
5、下面是两个程序流程图,试分别用N-S图和PAD表示之,并计算它们的McCabe复杂性度量。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。