キーボードから5文字列の文字列を入力し、関数sortを呼び出して文字列を大きいものから小さいものに並べ替えてから、print関数を呼び出して文字列の出力を完了する必要があります。

この共有のためだけに、C言語の練習プラットフォームから獲得しました...

今回共有する:

  1. コード表示
  2. コード分​​析

コード表示:

#include<stdio.h>
#include<string.h>
void sort(char *name[],int n);
void print(char *name[],int n);
int main()
{
    
    
    char *name[5];
    char a[31],b[31],c[31],d[31],e[31];
    int i,n=5;
    name[0]=a;name[1]=b;name[2]=c;name[3]=d;name[4]=e;
	
	printf("Please input 5 strings:");
	for(i=0;i<5;i++)
	gets(name[i]);
	printf("Output:\n");
	sort(name,5);
    printf("After the strings are sorted the result:\n");
	print(name,5);
	return 0;
}
void sort(char *name[],int n)
{
    
    
   int i,j;
   char *temp;
   for(i=0;i<4;i++)
   {
    
    
	   for(j=0;j<4-i;j++)
	   {
    
    
	   if(strcmp(name[j],name[j+1])>0)
	   {
    
    
		   temp=name[j];
		   name[j]=name[j+1];
		   name[j+1]=temp;
	   }
	   }
   }
}
void print(char *name[],int n)
{
    
    
	int i;
	for(i=0;i<5;i++)
	{
    
    
		printf("%s\n",name[i]);
	}
}

コード分​​析:

char *name[5];
    char a[31],b[31],c[31],d[31],e[31];
    int i,n=5;
    name[0]=a;name[1]=b;name[2]=c;name[3]=d;name[4]=e;
	

ここに次のコードを記述したことを考えると、この部分は実際には2次元の文字配列です。

	char *name[5][30];
	int i,n=5;

入力用のブラックボックスが表示された場合、char * name [5]と記述されている場合、2つの書き込み方法はまったく同じであり、終了します。

2番目のタイプの書き込みは、最初のタイプの入力とまったく同じですが、次のように2つのサブ関数の正式なパラメーターが考慮されます。

void sort(char *name[],int n);
void print(char *name[],int n);

	char *name[5][30];
	int i,n=5;

char * name [5] [30];が一致せず、データ入力後に2つのサブ関数を呼び出すことができない
ため、Enterキーを押すと、プログラムがクラッシュし、ブラックボックスが直接閉じます。
私の文章は、3次元の文字配列がサブ関数と一致しないということだと思います

以下:

void sort(char *name[],int n)
{
    
    
   int i,j;
   char *temp;
   for(i=0;i<4;i++)
   {
    
    
	   for(j=0;j<4-i;j++)
	   {
    
    
	   if(strcmp(name[j],name[j+1])>0)
	   {
    
    
		   temp=name[j];
		   name[j]=name[j+1];
		   name[j+1]=temp;
	   }
	   }
   }
}

コードのこの部分は、2次元文字配列のソートに適用される単純な数値バブルソートです。

おすすめ

転載: blog.csdn.net/yooppa/article/details/114548086
おすすめ