最长单词(35分)
题目内容:
输入一段英文句子(不包含标点符号),求期中最长的一个单词(如果有多个最长单词,以最左边的为准),并输出该单词。
主函数已给出,请编写函数longest( ),完善整个程序。
#include <iostream>
using namespace std;
int main()
{
char c1[1000];
char c2[100];
cin.getline(c1,1000);
longest(c1,c2);
cout<<c2<<endl;
return 0;
}
输入格式:
一段英文句子
输出格式:
英文句子中的最长单词
输入样例:
A Grain of Sand William Blake
输出样例:
William
代码如下:
#include <iostream>
using namespace std;
void longest(char *p1, char *p2)
{
int len[999]={0},i=0;
char *signal[999]={0},*point=p1;
while(1)
{
if(*point=='\0')
{
signal[i]=point;
if(i>=1)
{
len[i]=signal[i]-signal[i-1];
}
i++;
break;
}
if(*point==' ')
{
signal[i]=point;
if(i>=1)
{
len[i]=signal[i]-signal[i-1];
}
i++;
}
point++;
}
len[0]=signal[0]-p1;
int max=len[0],flag;
for(int j=0;j<=i;j++)
{
if(max<len[j])
{
max=len[j];
flag=j;
}
}
int k=0;
if(flag==0)
{
for(char *p=p1;p<signal[0];p++)
{
p2[k]=*p;
k++;
}
}
else
for(char *p=signal[flag-1]+1;p<signal[flag];p++)
{
p2[k]=*p;
k++;
}
}
int main()
{
char c1[1000];
char c2[100];
cin.getline(c1,1000);
longest(c1,c2);
cout<<c2<<endl;
return 0;
}