阅读下列说明和流程图,将应填入(n)处。 [流程图说明] 流程图1-1描述了一个算法,该算法将给定的原字符串中的所有前导空白和尾部空白都删除,但保留非空字符之间的空白。例如,原字符串“ File Name ”,处理后变成“File Name”。流

admin2008-04-03  30

问题 阅读下列说明和流程图,将应填入(n)处。
[流程图说明]
   流程图1-1描述了一个算法,该算法将给定的原字符串中的所有前导空白和尾部空白都删除,但保留非空字符之间的空白。例如,原字符串“  File Name  ”,处理后变成“File Name”。流程图1-2、流程图1-3、流程图1-4分别详细描述了流程图1-1中的框A,B,C。
   假设原字符串中的各个字符依次存放在字符数组ch的各元素ch(1),ch(2),…,ch(n)中,字符常量KB表示空白字符。
   流程图1-1的处理过程是:先从头开始找出该字符串中的第一个非空白字符ch(i),再从串尾开始向前找出位于最末位的非空白字符ch(j),然后将ch(i),…,ch(j)依次送入 ch(1),ch(2),…中。如果原字符串中没有字符或全是空白字符,则输出相应的说明。在流程图中,strlen是取字符串长度函数。

[问题]在流程图1-1中,判断框P中的条件可表示为:
   i>(5)  

选项

答案(1) i<=n, 或其等价形式 (2) ch(j)=KB (3) k<=j, 或其等价形式 (4) ch(k-i+1) (5) n

解析 本题用分层的流程图形式描述给定的算法。流程图1-1是顶层图,其中用A、B、C标注了三个处理框。而流程图1-2、图1-3、图1-4分别对这三个处理框进行了细化。
   A框的功能是依次检查ch(1),ch(2),…,直到找到非空白字符ch(i)。流程图1-2中,对i=1,2,…进行循环,只要尚未找到尾,而且ch(i)=KB,则还需要继续查找。因此,(1)处可填写i<=n (n>=i是其等价形式)。
   B框的功能是依次检查ch(n),ch(n-1),…,直到找到非空字符ch(j)。流程图1-3中,对 j=n,n-1,…进行循环,只要ch(j)=KB,则还需要继续循环查找。由于B框处理的前提是A框中已经找到了非空字符ch(i),所以,循环最多到达j=i处就会结束。因此(2)处应填写判断条件ch(j)=KB。判断条件j>i是可有可无的。
   C框的功能是将ch(i),ch(i+1),…,ch(j)的内容依次送入ch(1),ch(2),…中。流程图1-4中,对k=i,i+l,…,j进行循环,即只要k<=j,就要继续做传送,继续循环。因此(3)处可填写k<=j。
   由于ch(i)应送往ch(1),ch(i+1)应送往ch(2),…,所以,ch(k)应送往ch(k-i+1)。这是程序员应熟练掌握的基本功:从几个特例,寻找普遍规律,再用特例代进去试验是否正确。因此,(4)处应填写ch(k-i+1)。
   在流程图1-1中,判断ch是空白字符串,等价于A框处理结束后没有找到空白字符。从流程图1-2中可以看出,循环变量i超过n(或达到n+1)时,就说明从头到尾都找过了,仍没有找到空白字符。因此,(5)处可以填写n。
转载请注明原文地址:https://kaotiyun.com/show/6sjZ777K
0

最新回复(0)