C++编程问题?输入一个英语句子,输出其中最长的单词,并输出次单词的位置。

2024-12-01 03:28:52
推荐回答(2个)
回答1:

可能是字符串没加\0吧,数组b[80]没显示0初始化,find函数里也没有显式的加\0。没看懂你的算法,所以只能这样猜了。写了个标准库的方法,可以参考下:
#include
#include
#include

using namespace std;
int main()
{
typedef string::size_type ST;
//存放所有单词的长度、单词本身、单词出现的位置
multimap > m;
string line;
cout<<"请输入一个英文句子:";
getline(cin,line);
ST pos=0;
while((pos=line.find(',')) line[pos]=' ';//替换掉所有逗号

istringstream ins(line);
string token;
pos=0;
while(ins>>token)
m.insert(pair >(token.size(),
pair(token,pos=line.find(token,pos)+1)));

ST t=m.rbegin()->first;
//map容器默认是按照key排序的,最后的长度最大,往前找
for(multimap >::reverse_iterator it=m.rbegin();
it!=m.rend();++it)
if(it->first==t)
cout<<"最长的单词是:"<second.first< <<"起始位置下为:"<second.second< else break;
}
如果有长度一样的词,按照倒序显示,这样简单些。起始位置从1开始算的。

回答2:

这种情况 语句没有响应就是ascll代码意思就是超过所能理解的代码