C语言求两个集合的交集

本文提供了一个使用C语言实现求两个集合交集的代码示例,并对代码进行了详细的解释。

问题描述

给定两个由整型数构成的集合,分别存储在数组A和B中,每个集合包含5个元素。编写一个C程序,计算这两个集合的交集,并将交集元素输出。

算法思路

  1. 定义一个函数 mix(a, b, c),该函数接受三个整型数组 abc 作为参数,分别表示集合A、集合B和用于存储交集的数组C。
  2. mix 函数内部,使用两个嵌套的循环遍历数组 ab
  3. 在循环中,比较 ab 中的元素,如果找到相等的元素,则将该元素添加到数组 c 中,并使用一个计数器 count 记录交集元素的个数。
  4. 为了避免重复添加相同的元素,在内层循环中使用 break 语句,一旦找到相等的元素就跳出内层循环。
  5. 函数 mix 返回交集元素的个数 count
  6. main 函数中,首先声明三个整型数组 ABC,分别用于存储集合A、集合B和交集元素。
  7. 使用 printf 函数提示用户输入集合A和集合B的5个整数,并使用 scanf 函数将用户输入的值存储到数组 AB 中。
  8. 调用函数 mix 计算集合A和集合B的交集,并将交集元素存储在数组 C 中,将交集元素的个数存储在变量 count 中。
  9. 使用 printf 函数输出交集元素。

代码实现

#include <stdio.h>

int mix(int a[], int b[], int c[]) {
    int count = 0;

    for (int i = 0; i < 5; i++) {
        for (int j = 0; j < 5; j++) {
            if (a[i] == b[j]) {
                c[count] = a[i];
                count++;
                break;
            }
        }
    }

    return count;
}

int main() {
    int A[5], B[5], C[5];
    
    printf('请输入集合A中的5个整数,以空格分隔:');
    for (int i = 0; i < 5; i++) {
        scanf('%d', &A[i]);
    }

    printf('请输入集合B中的5个整数,以空格分隔:');
    for (int i = 0; i < 5; i++) {
        scanf('%d', &B[i]);
    }

    int count = mix(A, B, C);

    printf('集合A和集合B的交集元素有:');
    for (int i = 0; i < count; i++) {
        printf('%d ', C[i]);
    }
    printf('
');

    return 0;
}

示例运行

请输入集合A中的5个整数,以空格分隔:1 2 3 4 5
请输入集合B中的5个整数,以空格分隔:2 4 6 8 10
集合A和集合B的交集元素有:2 4 

总结

本文介绍了使用C语言求解两个集合交集的算法和代码实现,并提供了示例运行结果。该算法简单易懂,适合初学者学习和使用。需要注意的是,该代码示例中集合的大小固定为5,如果需要处理不同大小的集合,需要对代码进行相应的修改。

C语言求两个集合的交集算法及代码示例

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

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