最长的单词
c++
【问题描述】
一个以“.”结尾的简单英文句子,单词之间用一个空格或者逗号分隔,没有缩写形式和其他特殊形式。
输入:一个以“.”结尾的简单英文句子(长度不超过500)。
输出:该句子中最长的单词。如果多于一个,则输出第一个。
【样例输入】
Hello,I am a chinese girl.
【样例输出】
chinese
#include <iostream>
int main()
{
const int N = 500;
char a[N];
char ch;
int i = 0;
while ((ch = std::getchar()) != EOF)
{
if (ch == '.')
break;
a[i++] = ch;
}
a[i] = '\0';
const char *first = nullptr;
const char *last = nullptr;
int len = 0;
const char *p = a;
while (*p)
{
if (std::isalpha(*p))
{
const char *q = p;
int c = 0;
do
{
p++;
c++;
} while (*p && std::isalpha(*p));
if (c > len)
{
len = c;
first = q;
last = p;
}
}
else
{
p++;
}
}
for (; first != last; ++first)
std::cout << *first;
return 0;
}