C++ 输出该句子中最长的单词

描述一个以'.'结尾的简单英文句子,单词之间用空格分隔,没有缩写形式和其它特殊形式输入一个以'.'结尾的简单英文句子(长度不超过500),单词之间用空格分隔,没有缩写形式... 描述
一个以'.'结尾的简单英文句子,单词之间用空格分隔,没有缩写形式和其它特殊形式
输入
一个以'.'结尾的简单英文句子(长度不超过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;

}
展开
 我来答
luo421458817
2015-09-02
知道答主
回答量:2
采纳率:0%
帮助的人:2544
展开全部

两处错误 :

一: wordindex=i-count+1;  改为  wordindex=i-count;

二:count=0;这一行挪到if{}大括号外

追问
听了您的意见改了,但是还是有错,比如
输入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;

}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式