最长单词(蓝桥杯 提高题)

@[TOC](最长单词(蓝桥杯 提高题))


题目正文

编写一个函数,输入一行字符,将此字符串中最长的单词输出。
输入仅一行,多个单词,每个单词间用一个空格隔开。单词仅由小写字母组成。所有单词的长度和不超过100000。如有多个最长单词,输出最先出现的。

输入

输出

样例

I am a student
student

代码:

#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
void longestwords(char s[]);
int main()
{
    
    
    char a[100000];
    gets(a);
    longestwords(a);

}
void longestwords(char s[])
{
    
    
    int maxx=0,len=0;
    char ma[200],m[200];
    int n=strlen(s);
    for(int i=0;i<=n;i++)
    {
    
    
        if(s[i]>='a' && s[i]<='z')
        {
    
    
            m[len++]=s[i];
        }
        else
        {
    
    
            m[len]='\0';
            len>maxx ? maxx=len,strcpy(ma,m),len=0 :len=0;
        }

    }
    cout<<ma<<endl;
}

总结

我是用strcpy函数存放最长的单词,但是在一开始的时候,再自定义函数中的for循环中,i<=n,我没有加上等号,所以一直输出都不能正确,因为字符串还有一个反斜杠零,不能读取,所以要用小于等于零才是正确的。

猜你喜欢

转载自blog.csdn.net/MarigoldLi/article/details/117480393