题目内容:
"编写一个程序,当输入不超过60个字符组成的英文文字时,计算机将这个句子中的字母按英文字典字母顺序重新排列,排列后的单词的长度要与原始句子中的长度相同。
并且要求只对A到Z的字母重新排列,其它字符保持原来的状态。"
输入描述
输出描述
字符串的重新排列,只是大写字母按字典顺序,其他字母保持原位
输入样例
THE PRICE OFBREAD IS ¥1 25 PER POUND
输出样例
ABC DDEEE EFHIINO OP ¥1 25 PPR RRSTU
#include <stdio.h>
#include <iostream>
using namespace std;
int main(){
char c;
char s[100],sum[100]={0},zs[100]={0};
int n=0,i,j,czy;
c=getchar();
while(c!='\n'){
s[n++]=c;
c=getchar();
}
for(i=0;i<n;i++){
if(s[i] < 65 || s[i] > 90){
sum[i] = s[i];
}
else{
sum[i] = '0';
zs[i] = s[i];
}
}
// for(i=0;i<n;i++){
// cout<<sum[i];
// }
// cout<<endl;
// for(i=0;i<n;i++){
// cout<<zs[i];
// }
// cout<<endl;
for(i=0;i<n-1;i++){
for(j=0;j<n-i-1;j++){
if(zs[j]>zs[j+1]){
char temp = zs[j];
zs[j] = zs[j+1];
zs[j+1] = temp;
}
}
}
for(i=0;i<n;i++){
if(zs[i]>=65){
czy=i;
break;
}
}
// cout<<czy;
for(i=0;i<n;i++){
// cout<<zs.[i];
// for(j=czy;j<n;j++)
if(sum[i]=='0'){
sum[i]=zs[czy++];
}
}
for(i=0;i<n;i++){
cout<<sum[i];
}
return 0;
}