程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 二維數組-C語言 字符串指針排序函數

二維數組-C語言 字符串指針排序函數

編輯:編程綜合問答
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]);
}


求解答,萬分感謝!

最佳回答:


第一個程序


#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]);
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved