iostramusing 2022-01-23 16:42 采纳率: 96.3%
浏览 40
已结题

最长的单词c++用字符串写不能用函数

最长的单词
c++

【问题描述】

一个以“.”结尾的简单英文句子,单词之间用一个空格或者逗号分隔,没有缩写形式和其他特殊形式。

输入:一个以“.”结尾的简单英文句子(长度不超过500)。

输出:该句子中最长的单词。如果多于一个,则输出第一个。

【样例输入】

Hello,I am a chinese girl.

【样例输出】

chinese

  • 写回答

1条回答 默认 最新

  • _GX_ 2022-01-23 17:53
    关注
    #include <iostream>
    
    int main()
    {
        const int N = 500;
        char a[N];
        char ch;
        int i = 0;
        while ((ch = std::getchar()) != EOF)
        {
            if (ch == '.')
                break;
            a[i++] = ch;
        }
        a[i] = '\0';
        const char *first = nullptr;
        const char *last = nullptr;
        int len = 0;
        const char *p = a;
        while (*p)
        {
            if (std::isalpha(*p))
            {
                const char *q = p;
                int c = 0;
                do
                {
                    p++;
                    c++;
                } while (*p && std::isalpha(*p));
                if (c > len)
                {
                    len = c;
                    first = q;
                    last = p;
                }
            }
            else
            {
                p++;
            }
        }
        for (; first != last; ++first)
            std::cout << *first;
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月3日
  • 已采纳回答 2月23日
  • 创建了问题 1月23日