@[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,我没有加上等号,所以一直输出都不能正确,因为字符串还有一个反斜杠零,不能读取,所以要用小于等于零才是正确的。