给定一行英文句子,对其做格式校正。正确的格式为:
句首单词首字符如果是英文字母,则应大写;
其他英文字母均应为小写;
其他类型的字符维持不变。
每一行均有若干句子构成,每一句话的格式为:
xxx xxx, xxx⋯ xxx.
即每一句话均由若干个单词构成,每个单词之间用不少于1个的空格进行分隔。最后一个单词紧跟一个句末标点符号。句末标点符号共有三种,分别是:.、?、!。在句子中间,可能会有若干个有可能零个,的存在。
标点符号后可能会有若干个空格,也可能没有。
每个单词均由大小写英文字母或者纯阿拉伯数字构成。
保证单词不会跨行。
行首可能会有空格。
每个单词的长度不超过10,每一行句子的字符总数(包括空格、标点、字母)不超过100。不超过100行。
输出一个整数,为输入中单词的数量。
#include <bits/stdc++.h>
#include <cctype> // toupper 和 tolower
#include <string>
using namespace std;
void format(string &s){
bool capitalnext = true;
bool inword = false;
for(char &ch : s){
if(isalpha(ch)){
if(!inword && capi