句子体检
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目描述
英语老师请你写一个"句子体检"程序。
给你一行文本,其中只包含英文字母、数字和空格。把连续的、不含空格的一段字符称为一个单词。注意:行首、行尾以及单词与单词之间,都可能出现多个连续的空格。
请你输出三样东西:
- 这行文本里一共有多少个单词;
- 其中最长的单词是什么,它有多少个字符。如果有多个单词长度并列最长,输出最先出现的那一个;
- 把每个单词的首字母改成大写(其余字符保持不变),然后用单个空格把它们重新连起来输出。
输入格式
一行文本,长度不超过 个字符,保证至少包含一个单词。
输出格式
第一行一个整数,表示单词个数。
第二行一个字符串和一个整数,表示最长的单词和它的长度,用空格分隔。
第三行一个字符串,表示首字母大写并用单个空格重新连接后的整句。
样例 #1
样例输入 #1
hello GESP world 2026
样例输出 #1
4
hello 5
Hello GESP World 2026
样例解释
本样例的行首、行尾以及 hello 与 GESP 之间都有多余的空格,它们都不算作单词。
hello 和 world 都是 个字符,并列最长,按规则输出最先出现的 hello。
GESP 的首字母本来就是大写,改了以后没有变化;2026 以数字开头,把数字"变大写"不会有任何变化。
提示
数据范围
- 对于 的数据:文本长度 ,只含英文字母、数字和空格,且至少有一个单词。
提示
- 整行文本(含空格)要用
getline(cin, s)读入,不能用cin >> s——后者遇到空格就停了。 toupper作用在数字字符上不会有任何效果,所以不必特判,直接调用即可。- 拼接第三行时,可以先判断结果串是否为空:不为空就先补一个空格再接单词,这样行尾就不会多出空格。