title: 每日一题–英文字母排序 date: 2019-10-31 14:01:43 tags:
每日一题算法116.英文字母排序 (20分) C时间限制:3000 毫秒 | C内存限制:3000 Kb 题目内容: 编写一个程序,当输入英文字符串时,计算机将这个句子中的英文字母按字典字母顺序重新排列,排列后的单词的 长度要与原始句子中的长度相同,并且要求只对A到Z的字母重新排列,其它字符保持原来的状态。 输入描述 一个字符串,包括大写英文字母,以及其他字符 输出描述 字符串的重新排列,只是大写字母按字典顺序,其他字母保持原位 输入样例 THE PRICE OFBREAD IS ¥1 25 PER POUND 输出样例 ABC DDEEE EFHIINO OP ¥1 25 PPR RRSTU
题目很简单,重点在于基础以及自己的细心程度。
补充:做完后,我上网搜索了一下有没有更优的解法,答案是有的,再次附上代码。这种解法一步到位,便捷了许多。
#include <stdio.h> #include <string.h> int main(){ char s[100], t; int i, j, l; //输入字符串,遇到空格不会中断 gets(s); //使用内置函数,简化操作 l = strlen(s); //直接在原字符串上进行冒泡排序 for(i = 0; i < l; i++){ for(j = i + 1; j < l; j++){ if(s[i] >= 'A' && s[i] <= 'Z' && s[j] >= 'A' && s[j] <= 'Z'){ if(s[j] < s[i]){ t = s[i]; s[i] = s[j]; s[j] = t; } } } } //输出字符串 puts(s); return 0; }要学会合理使用内置函数。