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

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条)

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置