C语言求两个集合的交集算法及代码示例
C语言求两个集合的交集
本文提供了一个使用C语言实现求两个集合交集的代码示例,并对代码进行了详细的解释。
问题描述
给定两个由整型数构成的集合,分别存储在数组A和B中,每个集合包含5个元素。编写一个C程序,计算这两个集合的交集,并将交集元素输出。
算法思路
- 定义一个函数
mix(a, b, c),该函数接受三个整型数组a、b和c作为参数,分别表示集合A、集合B和用于存储交集的数组C。 - 在
mix函数内部,使用两个嵌套的循环遍历数组a和b。 - 在循环中,比较
a和b中的元素,如果找到相等的元素,则将该元素添加到数组c中,并使用一个计数器count记录交集元素的个数。 - 为了避免重复添加相同的元素,在内层循环中使用
break语句,一旦找到相等的元素就跳出内层循环。 - 函数
mix返回交集元素的个数count。 - 在
main函数中,首先声明三个整型数组A、B和C,分别用于存储集合A、集合B和交集元素。 - 使用
printf函数提示用户输入集合A和集合B的5个整数,并使用scanf函数将用户输入的值存储到数组A和B中。 - 调用函数
mix计算集合A和集合B的交集,并将交集元素存储在数组C中,将交集元素的个数存储在变量count中。 - 使用
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,如果需要处理不同大小的集合,需要对代码进行相应的修改。
原文地址: https://www.cveoy.top/t/topic/blUq 著作权归作者所有。请勿转载和采集!