//用指针数组处理,程序有问题,求改错。
#include<stdio.h>
#include<string.h>
void px(char *p[10],int n)
{
int i,j,k;
char *t;
for(i=0;i<n;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp(p[i],p[j])>0) k=j;
if(k!=i)
{
t=p[i];
p[i]=p[k];
p[k]=t;
}
}
}
int main()
{
char *p[10];
int i;
printf("请获得十串字符串:\n");
for(i=0;i<10;)
scanf("%s",p[i]);
printf("字符串降序排序后为:\n");
px(p,10);
for(i=0;i<10;i++)
printf("\n%s\n",*p[i]);
return 0;
}
修改处见注释,供参考:
#include<stdio.h>
#include<string.h>
void px(char* p[10], int n)
{
int i, j, k;
char* t;
for (i = 0; i < n - 1; i++) // 修改
{
k = i;
for (j = i + 1; j < n; j++)
if (strcmp(p[k], p[j]) > 0) k = j; //修改 if(strcmp(p[i],p[j])>0) k=j;
if (k != i)
{
t = p[i];
p[i] = p[k];
p[k] = t;
}
}
}
int main()
{
char a[10][20], * p[10]; //修改
int i;
printf("请获得十串字符串:\n");
for (i = 0; i < 10; i++){ //修改 for(i=0;i<10;)
scanf("%s", a[i]); //修改
p[i] = a[i]; //修改
}
printf("字符串降序排序后为:\n");
px(p, 10);
for (i = 0; i < 10; i++)
printf("\n%s\n", p[i]); //修改 printf("\n%s\n",*p[i]);
return 0;
}