zoukankan      html  css  js  c++  java
  • 字母排序问题(c++实现)

    描述:编写一个程序,当输入不超过60个字符组成的英文文字时,计算机将这个句子中的字母按英文字典字母顺序重新排列,排列后的单词的长度要与原始句子中的长度 相同。例如:

         输入:

        THE PRICE OFBREAD IS ¥1 25 PER POUND

        输出:

        ABC DDEEE EFHIINO OP ¥1 25 PPR RRSTU

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

    分析:难点在待排序列中混有不相干的字符,我用的是冒泡排序法,在大写字母间进行比较,用一个函数返回和最大值交换的字母的下标。

     1 #include<iostream>
     2 #include<string>
     3 using namespace std;
     4 
     5 //返回第k位前的一个大写字母的下标
     6 int cal(string a, int k)
     7 {
     8     for (int i = k; i >= 0; i--)
     9     {
    10         if (a[i] >= 'A'&&a[i] <= 'Z')
    11             return i;
    12     }
    13     return -1;
    14 }
    15 void exchange(string& a, int x, int y)
    16 {
    17     char swap = a[x]; a[x] = a[y]; a[y] = swap;
    18 }
    19 int main()
    20 {
    21     string a;
    22     getline(cin, a);
    23     int n=0;//记录大写字母的个数
    24     for (int i = 0; i < a.size(); i++)
    25     {
    26         if (a[i] >= 'A'&&a[i] <= 'Z')
    27             n++;
    28     }
    29     int start;//排序的初始值
    30     for (int i = 0;; i++)
    31     {
    32         if (a[i] >= 'A'&&a[i] <= 'Z')
    33         {
    34             start = i; break;
    35         }
    36     }
    37     int swap = cal(a,a.size()-1);//要交换的字母下标
    38     for (int i = 0; i < n; i++)
    39     {
    40         int max = start;
    41         for (int i = 0; i <= swap; i++)
    42         {
    43             if (a[i] >= 'A'&&a[i] <= 'Z'&&a[i]>a[max])
    44                 max = i;
    45         }
    46         exchange(a, max, swap);
    47         swap = cal(a, swap - 1);
    48     }
    49     cout << a << endl;
    50     system("pause");
    51     return 0;
    52 }
  • 相关阅读:
    C#实现根据域名查询ip实例
    Ajax: 一个建立Web应用的新途径(转)
    CRC循环校验的具体算法(转)
    生成静态文件的新闻系统核心代码(.net C#)
    一个ajax的例子
    使用 JavaScript 实现 XMLHttpRequest,在IE,FireFox 上测试通过
    微软SQL Server 2005的30项顶尖特性(转)
    利用XMLHTTP无刷新自动实时更新数据(转)
    五子棋的核心算法(转)
    编写安全的SQL Server扩展存储过程(转)
  • 原文地址:https://www.cnblogs.com/wuyoucao/p/4728616.html
Copyright © 2011-2022 走看看