【题目描述】
一个以‘.’结尾的简单英文句子,单词之间用空格分隔,没有缩写形式和其它特殊形式。
【输入】
一个以‘.’结尾的简单英文句子(长度不超过500),单词之间用空格分隔,没有缩写形式和其它特殊形式。
【输出】
该句子中最长的单词。如果多于一个,则输出第一个。
【输入样例】
I am a student of Peking University.
【输出样例】
University
【代码】
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int main()
{
char a[2500]; //题目说明不超过500但是试了501-510运行都显示错误 不清楚为什么 给大点就完事 有人知道原因希望告知评论下
gets(a);
int len=strlen(a);
int k=0,max=-1,max_x;
for(int i=0;i<len;i++) //遍历
{
if( (a[i] >= 'a' && a[i]<='z') || (a[i] >= 'A' && a[i] <='Z')) //若为大小字母则 计数器 k++
{
k++;
}
else //若为 空格与点则
{
if(k>max) //判断最大长度
{
max=k; //记录最大长度存入max中
max_x=i-max; //记录最大单词的起始坐标
}
k=0; //计数器清零
}
}
for(int i=max_x;i<max_x+max;i++) //输出起点 为 max_x 长度为max的单词
cout<<a[i];
}
版权声明:本文为weixin_50901683原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。