题目:编写程序,求出所给出的字符串中最长的字母子串(以非字母隔开)。例如,字符串"Apple$12pear watermelon $ # Banana"中最长的字母子串为"watermelon"。
算法提示:
定义一个字符数组存放最长的单词,定义一个变量存放这个单词的长度,将第一个单词作为最长的单词放人该字符数组中,同时单词的长度放入变量中,之后依次与其余的单词比较,不断地将最长的单词放入数组中,最后数组中的单词就是所求的最长的单词。
代码如下:
#include <iostream>
using namespace std;
int main()
{
char s[100];
char len_max[100]; //保存单词
char word[100]; //保存最长单词
cout<<"请输入一串字符:";
cin.getline(s,100);
int len=0,max=0;
for(int i=0;s[i]!=0;i++)
{
if((s[i]>='a' && s[i]<='z') || (s[i]>='A' && s[i]<='Z'))
{
len_max[len++]=s[i];
}
else
{
if(len>max)
{
max=len;
for(int j=0;j<=max;j++) //字符数组不能整体赋值,利用循环赋值
{
word[j]=len_max[j];
}
}
len=0;
}
}
cout<<word<<endl;
return 0;
}