题目如下:
实现代码及注释如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void input(char *str[], int n)//输入字符串
{
char **p;
for (p=str; p<str+n;++p)
{
fflush(stdin);//刷新输入缓冲区!!!
gets(*p);//从键盘获取字符串
}
}
void print(char *str[], int n)//打印字符串数据
{
char **p;
printf("排序后如下:\n");
for (p=str; p<str+n; p++)
{
printf("%s\n",*p);
}
}
void sort(char *str[], int n)//排序算法
{
int i, j;
char *tmp;
for (i=0; i<n; i++)
{
for (j=i+1; j<n; j++)
{
if (strcmp(str[i], str[j])>0)
{
tmp=str[i];
str[i]=str[j];
str[j]=tmp;
}
}
}
}
int main()
{
int n, i;
char **a;
printf("请输入n值: ");
scanf("%d", &n);
a=(char**)malloc(n*sizeof(char*));//申请空间
for (i=0; i<n;++i)
{
a[i]=(char*)malloc(30*sizeof(char));//给每一块申请出空间
}
input(a,n);
sort(a,n);
print(a,n);
for (i=0; i<n;++i)//释放空间
{
free(a[i]);
}
free(a);//释放空间
return 0;
}
运行截图如下: