题目内容:
"编写一个程序,当输入不超过60个字符组成的英文文字时,计算机将这个句子中的字母按英文字典 字母顺序重新排列,排列后的单词的长度要与原始句子中的长度相同。
并且要求只对A到Z的字母重新排列,其它字符保持原来的状态。"
输入描述
一个字符串,包括大写英文字母,以及其他字符
输出描述
字符串的重新排列,只是大写字母按字典顺序,其他字母保持原位
输入样例
THE PRICE OFBREAD IS ¥1 25 PER POUND
输出样例
ABC DDEEE EFHIINO OP ¥1 25 PPR RRSTU
分析:其实就是一个排序,只不过是数组中有部分元素不参加排序就可以了
#include<stdio.h>
#include<string.h>
#define M 60
int main()
{
char a[M],temp;
int i,j;
int sum;
gets(a);
sum = strlen(a);
for(i = sum-1;i > 0; i--)
for(j = 0;j < i; j++)
{
if(a[i] >= 'A'&&a[i] <= 'Z'&&a[j] >= 'A'&&a[j] <= 'Z')
if(a[i] < a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
puts(a);
return 0;
}