C++ 输出该句子中最长的单词
一个以'.'结尾的简单英文句子,单词之间用空格分隔,没有缩写形式和其它特殊形式
输入
一个以'.'结尾的简单英文句子(长度不超过500),单词之间用空格分隔,没有缩写形式和其它特殊形式
输出
该句子中最长的单词。如果多于一个,则输出第一个
我写的代码一直有错,请教问哪里错了?
#include <iostream>
using namespace std;
int main()
{
char str[500];
int i=0,count=0,size=0,wordindex=0;
cin.getline(str,500);
for(int i=0;str[i]!='.';i++)
{
if((str[i]>='A' && str[i]<='Z')||(str[i]>='a' && str[i]<='z'))
{
count++;
}
else
{
if(count>size)
{
size=count;
wordindex=i-count+1;
count=0;
}
}
}
for(i=wordindex;i<size+wordindex;i++)
{
cout<<str[i];
}
return 0;
} 展开
听了您的意见改了,但是还是有错,比如
输入I am a student of Peking University.输入只会是student ,只要最长单词在最后就无法输出,请问是什么原因?
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
char str[500];
int i = 0, count = 0, size = 0, wordindex = 0;
cin.getline(str, 500);
for (int i = 0; str[i] != '.'; i++)
{
if ((str[i] >= 'A' && str[i] <= 'Z') || (str[i] >= 'a' && str[i] <= 'z'))
{
count++;
}
else
{
if (count > size)
{
size = count;
wordindex = i - count;
}
count = 0;
}
}
for (i = wordindex; i < size + wordindex; i++)
{
cout << str[i];
}
return 0;
}
代码还是两个月前的。。我没有再修改过,今天才看到你追问了,运行了下你说的情况,结果是正确的,不知道你代码还有哪里不对,我都粘出来了,你自己对比下吧。不明白再问我吧
2015-09-02
如word.
解法:
在输出的循环前,加
if(count>size)
{
size=count;
wordindex=i-count;// 这里不用+1,上面还有一处同理
count=0;
}