测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A52050. 最长最短单词

填空题 中等

题目描述

最长最短单词

题目描述

    输入1行句子(不多于200个单词,每个单词长度不超过100),只包含字母、空格和逗号。单词由至少一个连续的字母构成,空格和逗号都是单词间的间隔。

    试输出第1个最长的单词和第1个最短单词。

输入

    一行句子。

输出

    第1行,第一个最长的单词。

    第2行,第一个最短的单词。

输入样例

    I am studying Programming language C in Peking University

输出样例

    Programming

    I

提示

    如果所有单词长度相同,那么第一个单词既是最长单词也是最短单词。


参考答案

#include <iostream> #include <stdio.h> #include <cstring> int i; #define A 9999 int main() { using namespace std; char ch[A]; gets(ch); int len=strlen(ch); int max_len=0,min_len=9999,sum=0; int positionmin,positionmax; ch[len]=' '; //避免内存偶然性(万一ch[len]处也是字母就麻烦了) for(i=0; i<len; i++) { if(ch[i]!=' '&&ch[i]!=',') { sum++; } else if(sum>0) { //这个显得有点重要 if(sum<min_len) { min_len=sum; positionmin=i-min_len; } if(sum>max_len) { max_len=sum; positionmax=i-max_len; } sum=0; } } for(i=positionmax; i<positionmax+max_len; i++) cout<<ch[i]; cout<<endl; for(i=positionmin; i<positionmin+min_len; i++) cout<<ch[i]; cout<<endl; return 0; }

答案解析

见代码

上一题 下一题