level 15
你需要把原题发出来,否则我们也不知道“单词”的定义到底是什么,也就没法回答你的问题了
不过我猜这里的“单词”应该是只包含英文字母的,其他字符都算单词的分隔符,那么你这里光标所在行的If条件就应该是“c不是字母,而是其他字符”,前一个括号的意思是“不是小写字母”,仿照它就可以写出“不是大写字母”的写法了
2021年09月05日 08点09分
2
在界面左边的文本框 Text1 中输入英文句子,单击“统计”按钮(Command1),在右边的列表框 List1 中显示英文单词及其在句子中出现的位置,并在按钮上方的标签框Label1中显示单词个数(假定每个单词中不包含英文字母以外的其他字符)
2021年09月05日 09点09分
level 15
我上面的回答已经提示了这个代码应该怎么写了,如果你还不懂,请看下面的完整解析(附答案):
首先清空列表框,准备显示新句子的分析结果
将句子内容记录到变量s中,并取出其长度slen(第1、2行你填对了)
令j=0(表示要记录的单词的字母个数,刚开始记录还没有字母所以是0)
令k=1(表示开始记录第1个单词)
令b=1(表示这个单词是从第1个字符开始的)
进入循环,对每个字符进行分析
取出第i个字符存入变量c(第3行正确)
如果c不是字母(这里应该是第4行吧?该行应该为 If (c < "a" Or c > "z") And (c < "A" Or c > "Z") Then ;顺便吐槽,And前后可以换过来,这样就不用加括号了),则:如果单词的字母计数j不为0,则该单词结束,记录下这个单词(a(k) = c 这行应该是第5行吧?因为这是错的,正确答案应该是 a(k) = Mid(s, b, j) ,即从句子的第b个字符开始取j个字符为第k个单词)及其起始位置,令单词计数加1(开始记录下一个单词),令字母计数归零;另外,记录下一个单词的起始位置(第6行正确答案为 b = i + 1 ,即假定下一个字符是下一个单词的起始位置)
否则,如果c是字母,则令 j = j + 1 (第7行的正确答案,即令单词的字母计数加1)
循环结束后,将各单词的位置及内容添加到列表框中,并显示出单词总数(具体分析略,第8行正确)
2021年09月05日 09点09分
4