读以下说明和流程图,回答问题将解答填入对应栏。 [说明] 下面的流程图,用来完成求字符串t在s中最右边出现的位置。其思路是:做一个循环,以s的每一位作为字符串的开头和t比较,如果两字符串的首字母是相同的,则继续比下去,如果一直到t的最后一个

admin2010-12-16  21

问题 读以下说明和流程图,回答问题将解答填入对应栏。
   [说明]
   下面的流程图,用来完成求字符串t在s中最右边出现的位置。其思路是:做一个循环,以s的每一位作为字符串的开头和t比较,如果两字符串的首字母是相同的,则继续比下去,如果一直到t的最后一个字符也相同,则说明在s中找到了一个字符串t;如果还没比较到t的最后一个字符,就已经出现字符串不等的情况,则放弃此次比较,开始新一轮的比较。当在s中找到一个字符串t时,不应停止寻找(因为要求的是求t在s中最右边出现位置),应先记录这个位置pos,然后开始新一轮的寻找,若还存在相同的字符串,则更新位置的记录,直到循环结束,输出最近一次保存的位置。如果s为空或不包含t,则返回-1。
   注:返回值用pos表示。
   
   [问题]
   将流程图的(1)~(5)处补充完整。

选项

答案(1) pos=-1; (2) s[i]!=’\0’; (3) s[j]=t[k]; (4) k>0; (5) pos=i;

解析 本试题考查流程图。
   题目中说明,如果s中不包含t,则返回-1,由流程图可以看出,如果(2)的条件不满足,流程图会直接跳到最后Returnpos,所以,在开始进行查找之前,就要先将pos置-1,所以(1)填入“pos=-1”。循环开始,(2)保证的条件应该是s不是空的,即(2)填入“s!=’\0’”。下面就开始进行比较,由于要输出的是最右边出现的位予,所以当第一次比较到相同的字符时不能输出,只要暂时把保存着,即(5)填入“pos=i”,然后进行下一次循环,当又出现相同的字符串时,就将pos的值更新,如果一直到最后都没有再次出现相同的字符串,就把pos输出。当比较到第一个相同的字符时,要继续比较下去,看是不是t和s的每一个字符全相同,所以(3)应填入“s[j]=t[k]”。在什么情况下能说明t和s完全相同呢?就是当t一直比较到最后一个字符即空格时,并且k大于0(因为如果k等于0,则说明第一个字母就不相同,根本没有开始比较),所以(4)应填入“k>0”。
转载请注明原文地址:https://jikaoti.com/ti/CXW7FFFM
0

最新回复(0)