[说明]
流程图的功能是对预处理后的正文进行排版输出。
假定:预处理后的正文存放在字符串 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,则修改后的流程图是否正确。
[流程图]
答案
[问题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]
不正确