C语言求最长单词
发布网友
发布时间:2022-04-27 09:26
我来回答
共1个回答
热心网友
时间:2023-09-19 01:59
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn=100;//这个表示单词可能的最大个数
const int maxl=100;//这个表示单词可能的最长长度,需要根据题目要求确定
int n,maxlen;
int len[maxn];
char ch[maxn][maxl];
int max(int a,int b){
return a>b?a:b;
}
int main(){
int k=0;
while(~scanf("%c",&ch[n][k])){//每次输入一个字符,n表示当前是第几个单词,k表示是这个单词的第几个字母
if(ch[n][k]!=' ' && ch[n][k]!='\n'){//不是空格或空行说明还没有读完,k++,接着读下一个
k++;continue;
}
len[n]=k-1;//计算这个单词的长度
maxlen=max(maxlen,len[n]);//更新最长的单词长度
if(ch[n][k]==' ') k=0,n++;//如果读到空格,说明这个单词读完了
else{//如果读到空行,说明这组数据读完了,开始输出这组数据的答案
for(int i=0;i<=n;i++)
if(len[i]==maxlen)//如果长度等于最长的单词长度,这个单词就是最长单词
printf("%s",ch[i]);//输出即可
putchar('\n');
memset(ch,0,sizeof(ch));//将原来的数组清空
n=0;maxlen=0;k=0;
}
}
return 0;
}
我自己测了一组输入数据,答案应该没什么问题了:
Hello sir are you satisfied with my answer ?
Yes I feel thankful of your answer .
How does it feel ?
It feels very good !
输出:
satisfied
thankful
does feel
feels
等等,我才发现是按字典序输出...我这是按输入顺序输出的....
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=100;//这个表示单词可能的最大个数
const int maxl=100;//这个表示单词可能的最长长度,需要根据题目要求确定
int n,maxlen;
struct Word{
int len;
char ch[maxl];
void clean(){
memset(ch,0,sizeof(ch));
}
}word[maxn];
int max(int a,int b){
return a>b?a:b;
}
bool cmp(const Word &a,const Word &b){//比较两个单词的函数
return strcmp(a.ch,b.ch)<0;
}
int main(){
int k=0;
while(~scanf("%c",&word[n].ch[k])){//每次输入一个字符,n表示当前是第几个单词,k表示是这个单词的第几个字母
if(word[n].ch[k]!=' ' && word[n].ch[k]!='\n'){//不是空格或空行说明还没有读完,k++,接着读下一个
k++;continue;
}
word[n].len=k-1;//计算这个单词的长度
maxlen=max(maxlen,word[n].len);//更新最长的单词长度
if(word[n].ch[k]==' ') k=0,n++;//如果读到空格,说明这个单词读完了
else{//如果读到空行,说明这组数据读完了,开始输出这组数据的答案
sort(word,word+n+1,cmp);//将所有单词按照字典序排序
for(int i=0;i<=n;i++)
if(word[i].len==maxlen)//如果长度等于最长的单词长度,这个单词就是最长单词
printf("%s",word[i].ch);//输出即可
putchar('\n');
for(int i=0;i<=n;i++)
word[i].clean();//将原来的数组清空
n=0;maxlen=0;k=0;
}
}
return 0;
}
上面这个是修改稿。
测试数据:
Hello sir are you satisfied with my answer ?
Yes I feel thankful of your answer .
How does it feel ?
It feels very good !
What feel it does ?
输出结果:
satisfied
thankful
does feel
feels
What does feel
最后一个What先输出不是错误哦...
因为W是大写...所以字典序比其他的小
追问好乱,可以发整齐的代码吗?