【题目描述】
对给定的n(1≤n≤20)个国家名(国家名字长度不超过20),按其字母的顺序输出。
【输入】
第一行为国家的个数n;
以下n行为国家的名字。
【输出】
n行,排序后的国名。
【输入样例】
3
Korea
China
Japan
【输出样例】
China
Japan
Korea

#include<iostream>
using namespace std;
#include<string>
#include<cmath>
int main()
{
    int n = 0;
    cin >> n;
    //定义一个字符串数组,存储n个国家名
    string* s = new string[n];
    for (int i = 0; i < n; i++)
    {
        cin >> s[i];
    }
    //冒泡排序,将这n个国家进行排序。
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n - i - 1; j++)
        {
            //直接比较大小即可,会按字典序进行比较。
            if (s[j] > s[j + 1])
            {
                string temp = s[j];
                s[j] = s[j + 1];
                s[j + 1] = temp;
            }
        }
    }
    //打印排序好后的结果
    for (int i = 0; i < n; i++)
    {
        cout << s[i] << endl;
    }
}

下意识只想到了按首字母排序,但是当首字母相同时,就应该按第二个字母排序,以此类推,所以直接使用首字母进行比较是不行的,然后字符串可以直接在if判断里面进行比较,就会按照字典序进行排序了。也就是逐位进行比较。