模拟 字符串必须先清零,要不会出现玄学的问题
#include<iostream> #include<cstdio> using namespace std; string s,S; int main() { s="";S=""; getline(cin,S,' '); bool flag=false; for(int i=0;i<S.length();i++) { // cout<<S[i]; if(S[i]!=' ') flag=false; if(S[i]==' '&&!flag&&(S[i-1]!='.'&&S[i-1]!=','&&S[i-1]!=' ')) { for(int j=i+1;j<S.length();j++) { if(S[j]!=' '&&S[j]>='0'&&s[j]<='9') { flag=true; break; } else if(S[j]!=' '&&(S[j]=='.'||S[j]==',')) { flag=false; break; } } if(flag) s+=' '; } if(S[i]!=' ') s+=S[i]; } // cout<<s<<endl; int f=0; for(int i=0;i<s.length();i++) { if(f==3||s[i]!='.') { f=0; } if(f==0&&s[i]=='.'&&s[i-1]!=','&&i!=0) { f++; cout<<" "; } else if(s[i]=='.') f++; cout<<s[i]; if(s[i]==','&&i!=s.length()-1) { cout<<" "; } } return 0; }