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

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日

悬赏问题

  • ¥15 (标签-STM32|关键词-智能小车)
  • ¥20 关于#stm32#的问题,请各位专家解答!
  • ¥15 (标签-python)
  • ¥15 第一个已完成,求第二个做法
  • ¥20 搭建awx,试了很多版本都有错
  • ¥15 java corba的客户端该如何指定使用本地某个固定IP去连接服务端?
  • ¥15 activiti工作流问题,求解答
  • ¥15 有人写过RPA后台管理系统么?
  • ¥15 Bioage计算生物学年龄
  • ¥20 如何将FPGA Alveo U50恢复原来出厂设置哇?