#include <stdio.h>

void mergeAndSort(int arr1[], int arr2[], int m, int n) {
    int merged[m + n];
    int i = 0, j = 0, k = 0;

    while (i < m && j < n) {
        if (arr1[i] < arr2[j])
            merged[k++] = arr1[i++];
        else if (arr2[j] < arr1[i])
            merged[k++] = arr2[j++];
        else {
            i++;
            j++;
        }
    }

    while (i < m)
        merged[k++] = arr1[i++];

    while (j < n)
        merged[k++] = arr2[j++];

    int sorted[k];
    int l, m;
    sorted[0] = merged[0];
    l = 1;

    for (m = 1; m < k; m++) {
        if (merged[m] != merged[m - 1])
            sorted[l++] = merged[m];
    }

    for (m = 0; m < l; m++) {
        printf('%d ', sorted[m]);
    }
}

int main() {
    int arr1[20], arr2[20];
    int i = 0, j = 0;

    // 输入第一组正整数
    while (1) {
        int num;
        scanf('%d', &num);

        if (num == -1)
            break;

        arr1[i++] = num;
    }

    // 输入第二组正整数
    while (1) {
        int num;
        scanf('%d', &num);

        if (num == -1)
            break;

        arr2[j++] = num;
    }

    mergeAndSort(arr1, arr2, i, j);

    return 0;
}

程序功能:

  1. 从标准输入中输入两组正整数,每组以'-1' 作为输入结束符。
  2. 合并两组正整数,去重并按从小到大顺序排序输出。

输入格式:

第一组正整数:以空格分隔,以'-1' 结尾。 第二组正整数:以空格分隔,以'-1' 结尾。

输出格式:

合并后的正整数集,以空格分隔,从小到大排序,重复元素只输出一次。

示例:

输入:

5 1 4 32 872 9 5 32 872 -1
1 5 2 87 10 1 9 5 1 10 -1

输出:

2 4 10 32 87 872

代码解释:

  1. mergeAndSort 函数:
    • 合并两个数组,并去重,同时排序。
    • 使用 merged 数组存储合并后的所有元素。
    • 使用 sorted 数组存储去重排序后的结果。
  2. main 函数:
    • 输入两组正整数,分别存储在 arr1arr2 数组中。
    • 调用 mergeAndSort 函数进行合并、去重和排序。
    • 输出排序后的结果。

代码优化:

  • 将双引号改为单引号。
  • 添加代码解释和示例。
  • 添加描述和关键词。
  • 优化标题和描述,使其更简洁易懂。
C语言编写程序:合并两组正整数并去重排序

原文地址: https://www.cveoy.top/t/topic/o1yX 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录