1993年高级程序员下午试题2

时间:2023-02-12 21:05:55

[说明]

流程图的功能是对预处理后的正文进行排版输出。

假定:预处理后的正文存放在字符串 S 中,S 由连续的单词组成,单词由连续的英文字母组成。在预处理过程中已产生以下信息:

变量 NW 存放正文中单词的个数,数组元素 SL(1)存放正文中第 1 个单词在S中的字符位置,SN(1) 存放正文中第 1 个单词的长度。规定 S 中的字符位置从 1 开始计数,每个字符占一个位置。字符串S中的某个单词可用如下的子串形式来存取:

S( 单词起始位置:单词终止位置 )

并规定在对字符串( 或子串 )赋值时,赋值号两端的字符串( 或子串 )长度必须相等。

排版输出的要求如下:

(1)每行输出 80 个字符;

(2)一个单词不能输出在两行中;

(3)除最后一行外,所有输出行既要左对齐又要右对齐。即每行的第一个字符必须是某个单词的第一个字母,最后一个字符必须是某个单词的最后一个字母;

(4)单词之间必须有 1 个或 1 个以上的空格;

(5)最后一行只须左对齐,且单词之间均只有一个空格;

(6)使字格尽可能地均匀分布在单词之间,即同一行中相邻的单词间的空格数最多相差 1。

假定正文中至少有两个以上单词,每个单词的长度均小于 40。此外,流程图中省略了数据的输入部分。图中「W」表示不超过W的最大整数。

[问题1] 

填充流程图中的 ①~⑥,使之成为完整的流程图。 

[问题2] 

图中的“输出末行”框未经细化。如果将图中的虚线部分复制到“输出末行”框上,那么复制部分应作怎样的修改?可用图中所标的 a,b,…,j来回答,例如 a 改成 1→I :删除 b。

[问题3]

如将图中开始部分的 SN(1)→LN 改成 0→LN;2→I 改成 1→I,则修改后的流程图是否正确。

[流程图] 

 

1993年高级程序员下午试题2

 

 

答案

[问题1]

① LN+1+SN(1)→LN1  ② LN1→LN  ③ ≥  ④ <  ③ K+1+LNW+SN(J) ⑥SN(1)→LN
[问题2]

删去f,g,h框,将e改成K+1+SN(J)→K
[问题3]

不正确