您的位置:首页 > 其它

练习17

2008-10-26 10:18 204 查看
/**********************************************************************************

17. 编写一个程序,当输入不超过60个字符组成的英文文字时,计算机将这个句子

中的字母按英文字典字母顺序重新排列,排列后的单词的长度要与原始句子中的长度

相同。例如:

输入:

THE PRICE OFBREAD IS ¥1 25 PER POUND

输出:

ABC DDEEE EFHIINO OP ¥1 25 PPR RRSTU

并且要求只对A到Z的字母重新排列,其它字符保持原来的状态。

*********************************************************************************/

#include <stdio.h>

void SortLetters(char sort[], int n)

{

int i,j;

//插入排序

for(i=1; i<n; i++)

{

char temp;

temp = sort[i];

for(j=i-1; j>=0; j--)

{

if(sort[j] > temp)

{

sort[j+1] = sort[j];

}

else break;

}

sort[j+1] = temp;

}

}

void main()

{

int i,k;

char letters[61];

char sort[60];

printf("请输入不少于60个字符:/n");

gets(letters);

for(i=0,k=0; letters[i] != '/0'; i++)

{

if(letters[i]>='A' && letters[i]<='Z')

{

sort[k++] = letters[i];

}

}

SortLetters(sort,k);

for(; i>=0; i--)

{

if(letters[i]>='A' && letters[i]<='Z')

{

letters[i] = sort[--k];

}

}

printf("%s/n",letters);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: