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;
}
上一题
下一题