Ordenar matriz de cadenas (matriz de punteros)
Descripción
Ingrese tres cadenas y envíelas en orden ascendente, la longitud de la cadena es inferior a 1000
Entrada
Cadena de 3 líneas
Salida
Salida en 3 líneas de pequeña a grande
Entrada de muestra
cde
afg
abc
Salida de muestra
abc
afg
cde
El código específico es el siguiente:
#include<stdio.h>
#include<string.h>
#define N 3
void sort(char *pc[N],int n);
int main()
{
char a[N][100],*p[N]; //此处声明了一个指针数组
int i,j;
for(i=0;i<N;i++)
p[i]=a[i]; //让指针指向a[](行地址)
for(i=0;i<N;i++)
scanf("%s",p[i]);
//scanf("%s",a[i]));
//scanf("%s",*(p+i));
sort(p,N);
for(i=0;i<N;i++)
printf("%s\n",p[i]);
return 0;
}
void sort(char *pc[N],int n)
{
int i=0,j=0,flag;
char t[100];
for(i=0;i<N-1;i++) //此处采用的是改进的冒泡排序法
{
flag=0;
for(j=0;j<N-i-1;j++)
{
if(strcmp(pc[j],pc[j+1])>0)//字典顺序(从小到大)
{
strcpy(t,pc[j]); //注意:strcmp()和strcpy()都是对地址进行操作
strcpy(pc[j],pc[j+1]);
strcpy(pc[j+1],t);
flag=1;
}
}
if(!flag)
break;
}
}