搞了半天算是弄明白了,正确的代码如下:
/*
10.20 用指向指针的指针的方法对5个字符串排序并输出。
*/
#include <stdio.h>
#include <string.h>
int main()
{
char s[][20]={"China","England","Japan","India","America"};
char t[20];
char *dz[5];
char **ps;
int i,j,k;
for(i=0;i<5;i++)
dz[i]=s[i];
ps=dz;
printf("原顺序:\n");
for(i=0;i<5;i++)
printf("%-8s",*(ps+i));
printf("\n");
for(i=0;i<4;i++)
{
k=i;
for(j=i+1;j<5;j++)
if(strcmp(*(ps+j),*(ps+k))<0) k=j;
if(k!=i)
{
strcpy(t,*(ps+i));
strcpy(*(ps+i),*(ps+k));
strcpy(*(ps+k),t);
}
}
printf("排序后:\n");
for(i=0;i<5;i++)
printf("%-8s",*(ps+i));
printf("\n");
return 0;
}
|