题目要求:
输入n个字符串,将他们排序后输出。
要求使用动态数组和指针。
#include<stdio.h>
int main()
{
int n;
while(scanf("%d",&n)!=-1)
{
getchar();
getchar();//写两遍的原因,上一组最后一个数据的回车和输入n的回车
char **ch;
ch=(char**)malloc((n+1)*sizeof(char*));//申请n行动态空间
for(int i=0;i<n;i++)
{
ch[i]=(char*)malloc(80*sizeof(char));//再为每一行申请一定长度的空间
gets(ch[i]);//读入数据
}
for(int i=0;i<n-1;i++)//冒泡排序
{
for(int j=0;j<n-i-1;j++)
{
if(strcmp(ch[j],ch[j+1])>0)
{
char c[81];
strcpy(c, ch[j]);
strcpy(ch[j],ch[j+1]);
strcpy(ch[j+1], c);
}
}
}
for(int i=0;i<n;i++)
{
puts(ch[i]);
free(*ch);//释放该行的空间
*ch=NULL;//一定要把指针指向空!!!!
}
}
return 0;
}