题目:最长最短单词

tech2024-04-08  54

【题目描述】

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

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

【输入】

一行句子。

【输出】

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

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

【输入样例】

I am studying Programming language C in Peking University

【输出样例】

Programming I

【源代码】

#include <iostream> #include <cstring> using namespace std; int main() { char s[10000]; int len; int sum = 0, maxLen = 0, minLen = 9999; int maxPosition, minPosition; int i; gets(s); len = strlen(s); s[len] = ' '; //便于最后一个单词为最大单词情况 for (int i = 0; i <= len; i++) { if (s[i] != ' ' && s[i] != ',') sum++; //非空格或逗号,累加长度 else if (sum > 0) { //若是空格或逗号 if (sum > maxLen) { maxLen = sum; //存储当前最长单词长度 maxPosition = i - sum; //记录最长单词位置 (单词开始位置) } if (sum < minLen) { minLen = sum; //存储当前最短单词长度 minPosition = i - sum; //记录最短单词位置(单词开始位置) } sum = 0; //计数器归零,开始下一个单词计数 } } //输出最长单词和最短单词 for (i = maxPosition; i <= maxPosition + maxLen - 1; i++) cout << s[i]; cout << endl; for (i = minPosition; i <= minPosition + minLen - 1; i++) cout << s[i]; return 0; }
最新回复(0)