试题描述:
输入包含十行,每行为一个国名,长度均不超过20。按字典顺序输出国名,每行为一个国名。
输入示例:
Slovak
China
Japan
England
Sweden
Lithuania
Monaco
Croatia
Malta
Luxembourg
输出示例:
China
Croatia
England
Japan
Lithuania
Luxembourg
Malta
Monaco
Slovak
Sweden
数据范围
输入输出均为字符串,并且输入字符串长度不超过20
#include<stdio.h>
#include<string.h>
int main()
{
char s[11][21],r[11][21];//一个是排序前的输入,一个是排序后的输出
int k;
for(int i=0;i<10;i++)
{
gets(s[i]);//输入十个国名
}
for(int i=0;i<10;i++)
{
k=i;//设k是最小的国名序号
for(int h=i+1;h<10;h++)//每轮找出最靠前的国名
{
if(strcmp(s[k],s[h])>0)
k=h;
}
strcpy(r[i],s[k]);//依次复制到输出数组
strcpy(s[k],s[i]);//注意将"第一个"国名更新到最小国名处,避免重复或遗漏
}
printf("\n");
for(int i=0;i<10;i++)
{
puts(r[i]);
}
return 0;
}
运行结果: