📜  c 中字符串的合并排序(1)

📅  最后修改于: 2023-12-03 14:39:41.354000             🧑  作者: Mango

C 中字符串的合并排序

在 C 语言中,字符串是以字符数组的形式存储的,而对于字符串的合并和排序,我们可以通过一些算法和函数来实现。

字符串的合并

字符串的合并,即将两个或多个字符串连接成一个新的字符串。在 C 语言中,我们可以使用 strcat() 函数来完成字符串的合并操作。

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

int main() {
    char str1[100] = "Hello";
    char str2[100] = " World!";
    
    strcat(str1, str2); // 将 str2 合并到 str1
    
    printf("合并后的字符串: %s\n", str1);
    
    return 0;
}

上述代码中,strcat() 函数将 str2 中的内容连接到 str1 的末尾,最终将合并后的字符串打印出来。

字符串的排序

排序是将一组元素按照某种规则重新排列的过程。对于字符串的排序,我们可以使用 strcmp() 函数来进行比较。

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

int main() {
    char str[5][50], temp[50];
    int i, j, n;

    printf("请输入字符串的个数:");
    scanf("%d", &n);

    printf("请输入 %d 个字符串:\n", n);
    for (i = 0; i < n; i++) {
        scanf("%s", str[i]);
    }

    // 使用冒泡排序对字符串进行排序
    for (i = 0; i < n - 1; i++) {
        for (j = i + 1; j < n; j++) {
            if (strcmp(str[i], str[j]) > 0) {
                strcpy(temp, str[i]);
                strcpy(str[i], str[j]);
                strcpy(str[j], temp);
            }
        }
    }

    printf("排序后的字符串:\n");
    for (i = 0; i < n; i++) {
        printf("%s\n", str[i]);
    }

    return 0;
}

上述代码中,我们使用冒泡排序算法对输入的字符串数组进行排序。通过 strcmp() 函数来比较两个字符串的大小关系,并通过 strcpy() 函数交换字符串的位置实现排序。

Markdown 格式

以上介绍的代码片段使用 Markdown 格式可以这样表示:

### 字符串的合并

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

int main() {
    char str1[100] = "Hello";
    char str2[100] = " World!";
    
    strcat(str1, str2); // 将 str2 合并到 str1
    
    printf("合并后的字符串: %s\n", str1);
    
    return 0;
}
字符串的排序
#include <stdio.h>
#include <string.h>

int main() {
    char str[5][50], temp[50];
    int i, j, n;

    printf("请输入字符串的个数:");
    scanf("%d", &n);

    printf("请输入 %d 个字符串:\n", n);
    for (i = 0; i < n; i++) {
        scanf("%s", str[i]);
    }

    // 使用冒泡排序对字符串进行排序
    for (i = 0; i < n - 1; i++) {
        for (j = i + 1; j < n; j++) {
            if (strcmp(str[i], str[j]) > 0) {
                strcpy(temp, str[i]);
                strcpy(str[i], str[j]);
                strcpy(str[j], temp);
            }
        }
    }

    printf("排序后的字符串:\n");
    for (i = 0; i < n; i++) {
        printf("%s\n", str[i]);
    }

    return 0;
}