2017-A
题目描述:
输入一个字符串,要求输出能把所有的小写字符放前面,大写字符放中间,数字放后面,并且中间用空格隔开,如果同种类字符间有不同种类的字符,输出后也要用字符隔开。
例:
输入 12abc3KF12
输出 abc KF 12 3 12
输入 rwr21r3hello666world
输出 rwr r hello world 21 3 666
题解:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
string s;
cin>>s;
char s1[100];//存放小写字母
char s2[100];//存放大写字母
char s3[100];//存放数字
int n1=0,n2=0,n3=0;
for(int i=0;i<s.length();i++)
{
if(s[i]>='a' && s[i]<='z')//先判断该字符是否属于a~z
{//若属于a~z
if(i==0)//如果是输入字符串的第一个元素直接存入结果
{
s1[n1++]=s[i];
}
else //如果不是第一个元素,则需要判断前驱元素是否是同一类型的元素
{
if(s[i-1]>='a' && s[i-1]<='z')//若前驱元素是同一类型的元素
{
s1[n1++]=s[i]; // 将当前元素压入结果
}
else //若前驱元素不是同一类型的元素 ,即同种类字符间由不同种类的字符
{
s1[n1++]=' '; //则输出后也要用字符隔开
s1[n1++]=s[i]; //隔开后再将当前元素压入结果,相当于另起一段
}
}
}
if(s[i]>='A' && s[i]<='Z')
{
if(i==0)
{
s2[n2++]=s[i];
}
else
{
if(s[i-1]>='A' && s[i-1]<='Z')
{
s2[n2++]=s[i];
}
else
{
s2[n2++]=' ';
s2[n2++]=s[i];
}
}
}
if(s[i]>='0' && s[i]<='9')
{
if(i==0)
{
s3[n3++]=s[i];
}
else
{
if(s[i-1]>='0' && s[i-1]<='9')
{
s3[n3++]=s[i];
}
else
{
s3[n3++]=' ';
s3[n3++]=s[i];
}
}
}
}
for(int i=0;i<n1;i++) cout<<s1[i];
cout<<" ";
for(int i=0;i<n2;i++) cout<<s2[i];
cout<<" ";
for(int i=0;i<n3;i++) cout<<s3[i];
system("pause");
return 0;
}
标签:字符,int,char,&&,2017,100
From: https://www.cnblogs.com/benbenlzw/p/17245831.html