enjoy6577
2015-08-15 15:47
采纳率: 66.7%
浏览 3.3k
已采纳

C语言 字符串指针排序函数

下面这个是用冒泡排序,运行错误

#include<stdio.h>
#include<string.h>
#define N 5
int main()
{
  char ptr[N][80]={ "how ","are ","you ","i","fine" };
  char *p[N];
  char *temp;
  int i,j;
  for(i=0;i<N;i++)  p[i]=ptr[i];

   for(i=0;i<N-1;i++)
      for(j=0;j<N-i;j++)
          if(strcmp(p[j],p[j+1])>0)
          {
            temp=p[j];
            p[j]=p[j+1];
            p[j+1]=temp;
          }
  for(i=0;i<N;i++)
      puts(p[i]);
}

下面这个是用选择排序,运行结果却是正确的

#include<stdio.h>
#include<string.h>
#define N 5
int main()
{
  char ptr[N][80]={ "how ","are ","you ","i","fine" };
  char *p[N];
  char *temp;
  int i,j;
  for(i=0;i<N;i++)  p[i]=ptr[i];

   for(i=0;i<N-1;i++)
      for(j=i+1;j<N;j++)
          if(strcmp(p[i],p[j])>0)
          {
            temp=p[j];
            p[j]=p[i];
            p[i]=temp;
          }
  for(i=0;i<N;i++)
      puts(p[i]);
}

下面这个没有用指针,直接改变原字符串数组,是用冒泡排序
也是正确的

#include<stdio.h>
#include<string.h>
#define N 5
int main()
{
  char ptr[N][80]={ "how ","are ","you ","i","fine" };
  char temp[80];
  int i,j;
   for(i=0;i<N-1;i++)
      for(j=0;j<N-i;j++)
          if(strcmp(ptr[j],ptr[j+1])>0)
          {
            strcpy(temp,ptr[j]);
            strcpy(ptr[j],ptr[j+1]);
            strcpy(ptr[j+1],temp);
          }
  for(i=0;i<N;i++)
      puts(ptr[i]);
}


求解答,万分感谢!

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • threenewbee 2015-08-15 23:19
    已采纳

    第一个程序

    
    #include<stdio.h>
    #include<string.h>
    #define N 5
    int main()
    {
      char ptr[N][80]={ "how ","are ","you ","i","fine" };
      char *p[N];
      char *temp;
      int i,j;
      for(i=0;i<N;i++)  
          p[i]=ptr[i];
    
       for(i=0;i<N-1;i++)
          for(j=i;j<N-1;j++)
              if(strcmp(p[j],p[j+1])>0)
              {
                temp=p[j];
                p[j]=p[j+1];
                p[j+1]=temp;
              }
      for(i=0;i<N;i++)
          puts(p[i]);
    }
    
    评论
    解决 无用
    打赏 举报
  • 查看更多回答(2条)

相关推荐 更多相似问题