问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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是大写...所以字典序比其他的小

追问好乱,可以发整齐的代码吗?

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
结核病是什么样的疾病? 曹丕17岁得了肺痨,明知自己命不长久,还要强争王位,是不是很自私呢?_百... 古代小说常出现的病名 急求一篇"生活小窍门"(500字)的作文 至今最有什么小妙招 健康的戒烟方法 笔记本电池锁死是什么原因引起的? 黑龙江债权转让合同纠纷该怎样取证 安徽债权转让合同纠纷应该怎么样取证 房产官司律师费多少 白砂糖与葡萄糖粉甜度对比&#39; strncmp( )函数返回值是什么 葡萄糖和白糖有什么区别吗?哪个更好呢?哪个含糖量更高?复制的不要! 4、编写一个函数int max_len(char *s[],int n), C语言:输入5个字符串,输出其中最长的字符串。若最长的字符串不止一个,则输出所有最长字符串。 c语言实现 一个具有MaxLen个单元的环形队列,设计求其*有多少个元素 int+elem[MAXLEN]什么意思 输入一个长度为n的字符串,打印出所有该字符串的排列组合。哪位大佬能帮我详细解答一下? char*Gets(int maxlen)啥意思 环境管理体系认证证书有什么用 陕西施工企业的环境管理体系认证怎么办理 爱聊相亲软件上有个同城在线是那种版本 爱聊相亲软件上有个同城在线是那种版本 同城聊欢约会软件女生可以看到男生上线吗 同城探聊女生也要充钻石吗?在同城聊欢APP女生要充钻石吗,女生陪聊有提成吗_百度问一问 同城探聊女生也要充钻石吗?在同城聊欢APP女生要充钻石吗,女生陪聊有提成吗_百度问一问 同城聊欢app注册显示你的设备被永久封禁是怎么回事? 同城聊欢app注册显示你的设备被永久封禁是怎么回事? 同城聊欢靠谱吗,里面有个女的要和我加好友,说258元 同城聊欢靠谱吗,里面有个女的要和我加好友,说258元 葡萄糖和白糖的区别 字符串比较函数strcmp()和strncmp() c语言这道题怎么做 我家的不粘锅裂了怎么办? #define MAX_LEN 200是什么意思?它的作用和#define MAX 10有什么区别? 二级指针的问题 #include &lt;stdio.h&gt; #include &lt;malloc.h&gt; #include&lt;stdlib.h&gt; #define maxlen 100 typedef char ElemType; 不沾锅的涂层出现裂纹,还能用吗?对人体健康有害吗? 不粘锅有裂逢能修补吗 高精度算法的C 不粘锅涂层裂口 char szsrc[256]; int maxlen[2] = {0, 0}; int cumax = 0; char longword[2][256]; 都是指的什么? 记账凭证通常分为哪三种格式?? 不粘锅上怎么有细小的裂痕 C语言中字符串的处理 德国菲仕乐不粘锅炒锅用一段时间后涂层有裂纹还能用吗 c语言中的整数计算 矿岩石不粘炒锅需要开锅吗 在PASCAL语言中,高精度加,减,乘,除怎么做? 不粘锅里面能摸出里面纹路的