本题其实是考察排序,只不过不是对传统的数值进行排序,而是对字符进行排序,我们可以循环n-1次,每一次循环中找该下标后的按字母排序最小的国家名,然后进行交换即可。
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
char cname[21][21]; //存放国家名
char tname[21]; //临时存放
int main() {
int n,k;
cin>>n;
for(int i=1;i<=n;i++) //输入国家名
cin>>cname[i];
for(int i=1;i<=n-1;i++) //n-1次比较
{
k=i;
for(int j=i+1;j<=n;j++) //找最小的下标
{
if(strcmp(cname[k],cname[j])>0) //按从小到大顺序
k=j;
}
// 交换i和最小的
strcpy(tname,cname[i]);
strcpy(cname[i],cname[k]);
strcpy(cname[k],tname);
}
for(int i=1;i<=n;i++)
cout<<cname[i]<<endl;
return 0;
}