c语言代码:
#include <stdio.h>
#include <string.h>
int main()
{
static char *a[5]={"spring","basic","good","very","high"};//不用静态也可以
char *p[5],*q[5],*m;
int i,j,k;
m=a[0];
for(k=0;k<5;k++)//如果没有这个指针复制,会出现指针乱指,内存空间无法读写的问题
{
p[k]=a[k];
q[k]=a[k];
}
for(i=0;i<4;i++)
for(j=i+1;j<5;j++)
{
if(strcmp(p[i],q[j])>0)
{
m=p[i];
p[i]=p[j];
p[j]=m;
}
}
printf("按照由大到小的顺序输出:");
for(j=0;j<5;j++)
printf("%6s",p[j]);
printf("\n");
return 0;
}
程序的优化版本:
#include <stdio.h>
#include <string.h>
int main()
{
char *a[5]={"spring","basic","good","very","high"};
char *m;
int i,j;
m=a[0];
for(i=0;i<4;i++)
for(j=i+1;j<5;j++)
{
if(strcmp(a[i],a[j])>0)
{
m=a[i];
a[i]=a[j];
a[j]=m;
}
}
printf("按照由大到小的顺序输出:");
for(j=0;j<5;j++)
printf("%s ",a[j]);
printf("\n");
return 0;
}
执行结果: