这是一个按小到大输出三个字符串的程序,调度不过,请帮忙,有错的地方请各位大哥指正,能帮我修改为最精短为最好!先谢谢了!!用C啊,我不会C++
main()
{void change(char *,int);
 int i=0;
 char *p[3];
 for(;i<3;i++)
  scanf("%s",*(p+i));
 change(p,3);
 for(i=0;i<3;i++)
  printf("%s\n",p+i);
}
void change(char *name[],int n)
{int m=0,k,j;
 char *p2;
 for(;m<n-1;m++)
  {k=m;
   for(j=m+1;j<n;j++)
    if(strcmp(name[k],name[j])>0) k=j;
   if(k!=m)
{p2=name[k];name[k]=name[m];name[m]=p2;}
  }
}

解决方案 »

  1.   

    void change(char**,int);void main(void)
    {
     int i=0;
     char *p[3];
     for(;i<3;i++)
     {
      p[i]=(char*)malloc(512);
      scanf("%s",p[i]);
     }
     change(p,3);
     for(i=0;i<3;i++)
     {
      printf("%s\n",p[i]);
      free(p[i]);
      }
    }
    void change(char *name[],int n)
    {int m=0,k,j;
     char *p2;
     for(;m<n-1;m++)
      {k=m;
       for(j=m+1;j<n;j++)
        if(strcmp(name[k],name[j])>0) k=j;
       if(k!=m)
    {p2=name[k];name[k]=name[m];name[m]=p2;}
      }
    }
      

  2.   

    #include "stdafx.h"
    #include "iostream.h"
    #include <string.h>int main(int argc, char* argv[])
    {
    void change(char *name[],int);
    int i=0;
    char *p[3];
    for(;i<3;i++)
    {
    p[i]=new char[];
    cin>>*(p+i);
    }
    change(p,3);
    for(i=0;i<3;i++)
    cout<<p[i];
    return 0;
    }
    void change(char *name[],int n)
    {
    int m=0,k,j;
    char *p2;
    for(;m<n-1;m++)
    {
    k=m;
    for(j=m+1;j<n;j++)
    {
    if(strcmp(name[k],name[j])>0) k=j;
    if(k!=m)
    {
    p2=name[k];name[k]=name[m];name[m]=p2;
    }
    }
    }
    }
      

  3.   

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <malloc.h>
    main()
    {void change(char *name[],int n);
     int i=0;
     char *p[3];
     char temp[80];
     int length;
     for(;i<3;i++)
     {
       scanf("%s",temp);
       length=strlen(temp);
       p[i]=(char*)malloc(length+1);
       strcpy(p[i],temp);
     }
       
     change(p,3);
     for(i=0;i<3;i++)
     {
       printf("%s\n",p[i]);
       free(p[i]);
     }
     return 0;
    }
    void change(char *name[],int n)
    {int m=0,k,j;
     char *p2;
     for(;m<n-1;m++)
      {k=m;
       for(j=m+1;j<n;j++)
        if(strcmp(name[k],name[j])>0) k=j;
       if(k!=m)
    {p2=name[k];name[k]=name[m];name[m]=p2;}
      }
    }