问题描述
从键盘输入一个字符串,将该字符串按下述要求处理后输出:
将ASCII码大于原首字符的各字符按原来相互间的顺序关系集中在原首字符的左边,
将ASCII码小于等于原首字符的各字符按升序集中在原首字符的右边。
输入说明
输入一行字符串,字符串c不长度超过100.
输出说明
输出处理后的一行字符串
输入样例
aQWERsdfg7654!@#$hjklTUIO3210X98aY
输出样例
sdfghjkla!#$0123456789@EIOQRTUWXYa
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char a[100], b[100]={NULL}, c[100]={NULL};
scanf("%s",a);
char sample = a[0];
int i, j;
int len = strlen(a);
for(i=1,j=0;i<len;i++)//大于首字母
{
if(a[i]>sample){
b[j] = a[i];
// printf("%c",b[j]);
j++;
}
}//printf("%s",b);
for(i=1,j=0;i<len;i++)//小于首字母
{
if(a[i]<=sample){
c[j] = a[i];
j++;
}
}//printf("%s\n",c);
int t, k;
int len2 = strlen(c);
for(i=0;i<len2-1;i++)//选择排序
{
k=i;
for(j=i+1;j<len2;j++)//每一轮确定一个
{
if(c[k]>c[j]){
k=j;
}
}
if(k!=i){
t = c[i];
c[i] = c[k];
c[k] = t;
}
}//printf("%s\n",c);
printf("%s%c%s", b, sample, c);
return 0;
}