# C 程序：按字典顺序（字典顺序）对元素进行排序

> 原文： [https://www.programiz.com/c-programming/examples/lexicographical-order](https://www.programiz.com/c-programming/examples/lexicographical-order)

#### 在此示例中，您将学习按字典顺序（字典顺序）对用户输入的 5 个字符串进行排序。

要理解此示例，您应该了解以下 [C 编程](/c-programming "C tutorial")主题：

*   [C 多维数组](/c-programming/c-multi-dimensional-arrays)
*   [C 编程字符串](/c-programming/c-strings)
*   [使用库函数的 C 编程中的字符串操作](/c-programming/string-handling-functions)

* * *

## 按字典顺序对字符串排序

```c
#include <stdio.h>
#include <string.h>

int main() {
   char str[5][50], temp[50];
   printf("Enter 5 words: ");

   // Getting strings input
   for (int i = 0; i < 5; ++i) {
      fgets(str[i], sizeof(str[i]), stdin);
   }

   // storing strings in the lexicographical order
   for (int i = 0; i < 5; ++i) {
      for (int j = i + 1; j < 5; ++j) {

         // swapping strings if they are not in the lexicographical order
         if (strcmp(str[i], str[j]) > 0) {
            strcpy(temp, str[i]);
            strcpy(str[i], str[j]);
            strcpy(str[j], temp);
         }
      }
   }

   printf("\nIn the lexicographical order: \n");
   for (int i = 0; i < 5; ++i) {
      fputs(str[i], stdout);
   }
   return 0;
}
```

**输出**

```c
Enter 5 words: R programming
JavaScript
Java
C programming
C++ programming

In the lexicographical order:
C programming
C++ programming
Java
JavaScript
R programming 
```

* * *

为了解决该程序，创建了一个名为`str`的二维字符串。 该字符串最多可包含`5`个字符串，每个字符串最多可包含`50`个字符（包括`null`字符）。

在程序中，我们使用了两个库函数：

*   [`strcmp()`](https://www.programiz.com/c-programming/library-function/string.h/strcmp) - 比较字符串
*   [`strcpy()`](https://www.programiz.com/c-programming/library-function/string.h/strcpy) - 复制字符串

这些函数用于比较字符串并以正确的顺序对其进行排序。