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

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 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵