为喵方正 2021-11-22 15:34 采纳率: 50%
浏览 1450
已结题

C++获取字符串中的最长单词

编写程序,求出所给出的字符串中最长的字母字串(以非字母隔开),例如,字符串”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;
}

  • 写回答

1条回答 默认 最新

  • bostonAlen 2021-11-22 15:40
    关注
    #include <iostream>
    #include <cstring>
    using namespace std;
     
    int main() {
        char s[512], *p = s, t[512], m[512];
        int len=0, max=0;
        gets(s);
     
        do {
            if ((*p>='a' && *p<='z') || (*p>='A' && *p<='Z')) {
                t[len++] = *p;
            } else {
                if (len>max) {
                    t[len] = 0;
                    strcpy(m, t);
                    max = len;
                }
                len = 0;
            }
            p++;
        } while (*p!=0);
        if (len>max) {
            t[len] = 0;
            strcpy(m, t);
            max = len;
        }
     
        cout <<"-------------------" << endl;
        cout << m << endl;
        cout <<"-------------------" << endl;
     
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月28日
  • 已采纳回答 11月28日
  • 创建了问题 11月22日

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装