标题
处理字符串
问题描述
从键盘输入一个字符串,将该字符串按下述要求处理后输出:
将ASCII码大于原首字符的各字符按原来相互间的顺序关系集中在原首字符的左边,
将ASCII码小于等于原首字符的各字符按升序集中在原首字符的右边。
输入说明
输入一行字符串,字符串c不长度超过100.
输出说明
输出处理后的一行字符串
输入样例
aQWERsdfg7654!@#$hjklTUIO3210X98aY
输出样例
sdfghjkla!#$0123456789@EIOQRTUWXYa
代码实现
#include <stdio.h>
#include <string.h>
int main() {
int pos, num = 0, c[1001] = {0};
char a[1001], b[1001];
gets(a);
pos = a[0];//标记首字母
for (register int i = 1; i < strlen(a); i++) {
int t = a[i];//转换成ASCII进行比较
if (t > pos) {
b[num] = a[i];//直接存入待输出的数组中
num++;
}
if (t <= pos) {
//printf("%d \n", t);
c[t]++;//记录ASCII码,标记出现
}
}
b[num] = a[0];
num++;
for (register int i = 1; i <= pos; i++) {
while (c[i] != 0) {//出现几次输出几次
//printf("%d ", i);
b[num] = i;
num++;
c[i]--;
}
}
puts(b);
return 0;
}