编写程序,求出所给出的字符串中最长的字母字串(以非字母隔开),例如,字符串”Apple$12pear watermelon $ # Banana“中最长的字母字串为"watermelon".
答:
#include<iostream>
#include<cstring>
#include<numeric>
using namespace std;
int main()
{
ios::sync_with_stdio(false);//不用管
cin.tie(nullptr); //不用管
int n = 0;
int maxlen = 0;
char t[100];
char max[100];
char s[100];
cin.getline(s, 100);
for (int i = 0; s[i-1]; i++)//当遍历到最后一项时如果也是字母 判断条件为s[i]则不会考虑最后一串单词。
{ //判断条件为s[i-1]时 可以遍历到'\0'所以会考虑最后一串单词。
if (isalpha(s[i]))//isalpha()判断字符是否为字母 不是则返回0 头文件为numeric
{
t[n++] = s[i];
}
else
{
if (maxlen < n)
{
int i;
maxlen = n;
for ( i = 0; i < n; i++)
{
max[i] = t[i];
}
max[i] = '\0';//最长单词字符数组末尾加上'\0'
}
n = 0;//抽取一个单词后 不管长度是否比上一个单词大 临时储存的t字符数组的下标
//都要初始化为0 .
}
}
cout << max << endl;
return 0;
}