下面的程序请帮忙看一下,万分感激!
void SortString(char **p,int n)
{
int i,j,k;
char *pTemp=NULL;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i;j<n-i;j++)
{
if(strcmp(p[j],p[k])<0) k=j;
}
if(k!=i)
{
pTemp=p[i];
p[i]=p[k];
p[k]=pTemp;
}
}
}
int main(int argc, char* argv[])
{
int i;
char str[10][20];
char *p[10];
for(i=0;i<10;i++)
{
printf(">");
scanf("%20s",str[i]);
p[i]=str[i];
}
SortString(p,10);
for(i=0;i<10;i++)
{
printf("%s\n",p[i]);
}
return 0;
}

解决方案 »

  1.   

    #include "string.h"void SortString(char p[N][],int n)
    {
    int i,j,k;
    char *pTemp=NULL;
    for(i=0;i<n-1;i++)
    {
    k=i;
    for(j=i;j<n-i;j++)
    {
    if(strcmp(p[j],p[k])<0) k=j;
    }
    if(k!=i)
    {
    strcpy(pTemp,p[i]);
    strcpy(p[i],p[k]);
    strcpy(p[k],pTemp);
    }
    }
    }
    #define N 30
    #define M 20
    int main(int argc, char* argv[])
    {
    int i;
    char str[N][M];
    int n=10; for(i=0;i<n;i++)
    {
    printf(">");
    scanf("%20s",str[i]);
    }
    SortString(str,n);
    for(i=0;i<n;i++)
    {
    printf("%s\n",str[i]);
    }
    return 0;
    }
      

  2.   

    将void SortString(char **p,int n)
    {
    int i,j,k;
    char *pTemp=NULL;
    for(i=0;i<n-1;i++)
    {
    k=i;
    for(j=i;j<n-i;j++)
    {
    if(strcmp(p[j],p[k])<0) k=j;
    }
    if(k!=i)
    {
    pTemp=p[i];
    p[i]=p[k];
    p[k]=pTemp;
    }
    }
    }
    中的for(j=i;j<n-i;j++)
    该为for(j = i+1;j < n;j++)
    我估计为什么问题了
      

  3.   

    不对,
    应该对把那个函数该为
    void SortString(char **p,int n)
    {
    int i,j,k;
    char *pTemp=NULL;
             char *pszSmall = NULL;
    for(i=0;i<n-1;i++)
    {
    k=i;
                      pszSmall = p[i];
    for(j=i+1;j<n;j++)
    {
    if(strcmp(p[j],pszSmall)<0) k=j;
    }
    if(k!=i)
    {
    pTemp=p[i];
    p[i]=p[k];
    p[k]=pTemp;
    }
    }
    }