6.20编写程序从标准输入中读入一些列string对象,知道同一单词连续出现两次,或者所有单词都已读完,才结束读取。请使用while循环,每次循环读取一个单词。如果连续出现相同的两个单词,便以break语句结束,此时,请输出这个重复的单词;否则,输出没有任何单词重复的信息。
答案书给的答案(人民邮电出版社):
#include "iostream"
#include "string"
using namespace std;
int main()
{
string preword, curword;
while(cin>>curword)
{
if(curword==preword)
break;
else
preword=curword;
}
if(curword== preword&& !curword.empty())
cout<<"the word' "<<curword<<" ' repeats two times"<<endl;
else
cout<<"there is no word to repeat two times"<<endl;
return 0;
}
但是感觉上总是少了点什么,运行下发现,当输入两个单词now no时,程序运行错误。
重新想了下,终于发现问题,是每次输入的时候 else preword=curword;错误,应该在后面加上一句curword="";
这样感觉是对的。
不知道到底是我想错了,还是编辑疏忽了。呵呵