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

A40717. 最长最短单词输入 1 行句子(不多于 200 个单词, 每个单词长度不超过 1 00) , 只包含字母、 空格和逗号。 单词由至少一个连续的字母构成, 空格和逗号都是单词间的间隔。试输出第 1 个最长的单词和第 1 个最短单词。输入一行句子。输出两行输出: 第 1 行, 第一个最长的单词。 第 2 行, 第一个最短的单词。样例输入I am studying Programming languag…

填空题 较易

题目描述

最长最短单词

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

输入

一行句子。

输出

两行输出: 第 1 行, 第一个最长的单词。 第 2 行, 第一个最短的单词。

样例输入

I am studying Programming language C in Peking University

样例输出

Programming

I

参考答案

#include <bits/stdc++.h> using namespace std; char s[20000]; struct word{ int len; vector<string> words; }; word wd[200]; int main() { int min=101,max=0,num=0,l,i,fmin,fmax; char sp[3]={' ',','}; const char * split=sp; gets(s); char *temp = strtok(s,split); while(temp!=NULL) { l = strlen(temp); for(i=0;i<num;i++) { if(wd[i].len==l) { wd[i].words.push_back(temp); break; } } if(i==num) { wd[num].len = l; wd[num].words.push_back(temp); num++; } temp = strtok(NULL,split); } for(int j=0;j<num;j++) { if(wd[j].len>max) { max = wd[j].len; fmax = j; } if(wd[j].len<min) { min = wd[j].len; fmin = j; } } cout<<wd[fmax].words[0]<<endl; cout<<wd[fmin].words[0]<<endl; return 0; }
上一题 下一题