原文地址:http://zhidao.baidu.com/question/432203933.html
题目:给定一个字符串数组,按字典序输出。对输入的正文按字典顺序取最大或最小的行输出,输出的结果由一个函数的参数来决定,为1,则为最大行输出
#include<stdio.h>
#include<string.h>
#define MAX 100
void sort(char str[][MAX+1],int n,int len)
{
char temp[MAX+1];
int i,j,k;
for(i=0;i<len;i++) //选择排序法进行按从大到小排序
{
k=i;
for(j=i+1;j<len;j++)
{
if( strcmp(str[j],str[k]) >= 1 )
k=j;
}
if( k!= i )
{
strcpy(temp,str[i]);
strcpy(str[i],str[k]);
strcpy(str[k],temp);
}
}
if( n == 1 ) //如是要求从大到小输出,则从后面开始向前面输出
{
for(i=len-1;i>=0;i--)
{
puts(str[i]);
}
}
else //否则从前面到后面输出,因为排序时是从小到大排序的
{
for(i=0;i<len;i++)
{
puts(str[i]);
}
}
}
int main()
{
char str[MAX+1][MAX+1]; //一共可以存储100个字符串,每个串长最长为100
int i,n;
printf("n:");
scanf("%d",&n);
gets(str[0]); //用来吃掉输入后面的回车
for(i=0;i<n;i++)
{
gets(str[i]);
}
sort(str,1,n);
printf("-------------\n");
sort(str,0,n);
}