编写一个程序,将输入字符串中的字符按如下规则排序。
规则1:英文字母从A到Z排列,不区分大小写。
如,输入:Type 输出:epTy
规则2:同一个英文字母的大小写同时存在时,按照输入顺序排列。
如,输入:BabA 输出:aABb
规则3:非英文字母的其它字符保持原来的位置。
如,输入:By?e 输出:Be?y
样例:
输入:
A Famous Saying: Much Ado About Nothing(2012/8).
输出:
A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8)
注:此处可以用冒泡排序法,因为针对条件“同一个英文字母的大小写同时存在时,按照输入顺序排列”,正式冒泡排序的稳定性。
#include<iostream> #include<stdlib.h> #include<ctype.h> using namespace std; int main() { char str[50]; gets(str); int q,j,k,temp; int n=strlen(str); for(int i=0;i<n;i++) { for( j=0;j<n-i-1;j++) { if(toupper(str[j])>'Z'||toupper(str[j])<'A') continue; k=toupper(str[j]); q=j; while((toupper(str[j+1])>'Z'||toupper(str[j+1])<'A')&&j<n-i-1) j++; if(j>=n-i-1) continue; if(k>toupper(str[j+1])) { temp=str[q]; str[q]=str[j+1]; str[j+1]=temp; } } } for(int i=0;i<n;i++) cout<<str[i]; system("pause"); return 0; }
字符串排序
最新推荐文章于 2024-07-19 14:31:10 发布