描述
编写一个程序,将输入字符串中的字符按如下规则排序。
规则 1 :英文字母从 A 到 Z 排列,不区分大小写。
如,输入: Type 输出: epTy
规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。
如,输入: BabA 输出: aABb
规则 3 :非英文字母的其它字符保持原来的位置。
如,输入: By?e 输出: Be?y
数据范围:输入的字符串长度满足 1≤n≤1000
输入描述:
输入字符串
输出描述:
输出字符串
示例1
输入:A Famous Saying: Much Ado About Nothing (2012/8).
输出:A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).
我的思路是,首先将数组里的字母提取出来,按顺序排成一个新数组,输出的时候判断原数组的元素,如果为字母,输出新数组的字母,如果为其他符号,输出原数组元素。
#include <stdio.h>
#include<string.h>
int main() {
int i,j=0,k=0,len,count=0;
char str[1000]={0};
char r[1000]={0};
scanf("%[^\n]\n",str);
len=strlen(str);
for(j=0;j<26;j++)
{
for(i=0;i<len;i++)
{
if((str[i]==('a'+j))||(str[i]==('A'+j)))
{
r[k]=str[i];
k++;
}
}
}
for(i=0;i<len;i++)
{
if(((str[i]>='A')&&(str[i]<='Z'))||((str[i]>='a')&&(str[i]<='z')))
{
printf("%c",r[count]);
count++;
}
else {
printf("%c",str[i]);
}
}
return 0;
}