定义一个二维字符串数组,输入若干个字符串,按升序排列后输出,要求设计通用的排序函数

输入参数为字符串数组和要排序的字符串的个数!!!
球给力

#include<stdio.h>
#include <string.h>

void getin(char str[10][30],int n)//输入字符串
{

int i;
for(i=1;i<=n;i++)
{
printf("please input %dth string:",i);
gets(str[i]);
}
}

void compare(char str[10][30],int n)//字符串的比较,排序
{
int i,j;
char string[30];
for (j=1;j<n;j++)//外循环(冒泡法)
{

for (i=1;i<=n-j;i++)//内循环
{
if(strlen(str[i])>strlen(str[i+1]))//字符串交换顺序
{
strcpy(string,str[i]);
strcpy(str[i],str[i+1]);
strcpy(str[i+1],string);
}
}
}
}

void output(char str[10][30],int n)//字符串的输出
{
int i;
for(i=1;i<=n;i++)
puts(str[i]);

}

int main()
{
int n;
char STR[10][30];
printf("please input a n:");//输入字符串的个数
scanf("%d",&n);
getchar();
getin(STR,n);//调用输入函数
compare(STR,n);//调用比较函数
printf("AFTER COMPARING\n");
output(STR,n);//调用输出函数
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-19
#include <stdio.h>
#include <string.h>
#define M 4
#define N 20

void Sort(char (*a)[N],int n)
{
int i,j;
char ct[N];
for(i = 0;i < n - 1;i++)
{
for(j = 0;j < n - i - 1;j++)
if(strcmp(a[j],a[j+1]) > 0)
{
strcpy(ct,a[j]);
strcpy(a[j],a[j+1]);
strcpy(a[j+1],ct);
}
}
}

int main()
{
int i;
char str[M][N];

//输入
for(i = 0;i < M;i++)
scanf("%s",str[i]);

//排序
Sort(str,M);

//输出
for(i = 0;i < M;i++)
printf("%s\n",str[i]);

return 0;
}

//简单实现了一下,还需要什么请追问。本回答被提问者和网友采纳