问题 填空题

[说明]

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

注:返回值用pos表示。

[问题]

将流程图的(1)~(5)处补充完整。

(5)处填()

答案

参考答案:pos=i

解析:

本试题考查流程图。

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

多项选择题
单项选择题