描述
给定n个字符串,请对n个字符串按照字典序排列。
输入描述:
输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。
输出描述:
数据输出n行,输出结果为按照字典序排列的字符串
输入:
9
cap
to
cat
card
two
too
up
boat
boot
输出:
boat
boot
cap
card
cat
to
too
two
up
实现代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ROW 101
#define Line 1001
int main()
{
char str[Line][ROW];
unsigned short num = 0;
unsigned short i,j,k,len;
scanf("%d\n",&num);
for(int i = 0; i < num; i++)
{
scanf("%s",str[i]);
}
for(i = 0; i < num - 1; i++)
{
for(j = 0; j < num - 1 - i; j++)
{
char *temp = NULL;
len = strlen(str[j]) > strlen(str[j+1]) ? strlen(str[j]) : strlen(str[j+1]);
for(k = 0; k < len; k++)
{
if(str[j][k] > str[j+1][k])
{
temp = (char*)malloc(len);
strncpy(temp,str[j+1],len);
strncpy(str[j+1],str[j],len);
strncpy(str[j],temp,len);
free(temp);
break;
}
else if(str[j][k] < str[j+1][k])
{
break;
}
}
}
}
for(int i = 0; i < num; i++)
{
printf("%s\n",str[i]);
}
return 0;
}