这道题还是相对比较简单的,就是字符串的一个处理(我是这么想的,不知道还有没有其他高级解法呢)
废话不多说啦,直接上代码咯,代码有注释的,应该很容易看懂
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;
int main()
{
static char a[500]={'\0'};//放单词用的
static char b[500]={'\0'};//缓冲串
int i=0,j=0,m=0;
char ch;
ch=getchar();//先输入一个
while(1)//'.'为结束标志
{
while(ch!=' ' || ch!='.')//当字符不为空格时
{
a[i++]=ch;//放进数组a中
ch=getchar();//继续输入
if(ch==' ' || ch=='.')//当ch为空格或句号时,跳出循环
break;
}
if(i>m)//如果数组a的长度大于m
{
for(j=0;j<m;j++)
{
b[j]={'\0'};//在更新最长单词前,把数组b清空
}
m=i;//让m=i,更新最大值
for(j=0;j<m;j++)
{
b[j]=a[j];//把数组a中的单词放进数组b中
}
}
i=0;//i置为0
if(ch=='.')//当ch为句号时,结束外层循环
break;
ch=getchar();
}
for(i=0;i<m;i++)
{
printf("%c",b[i]);
}
return 0;
}