c语言求两个集合交集,最后输出一行交集,用空格分开,最后一个数后面不加空格
时间: 2024-09-23 20:01:05 浏览: 37
在C语言中,我们可以使用标准库函数`std::set_intersection()`来计算两个集合的交集,然后通过循环遍历并逐个添加元素到结果字符串中,每个元素之间加上空格。这里假设我们有两个整数集合,例如`set1`和`set2`,它们可以是结构体数组或者其他实现了比较操作符的容器。
以下是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <set>
// 如果你使用的是自定义数据结构,需要在这里定义比较操作
typedef struct MySetItem {
int value;
} MySetItem;
bool compare(MySetItem a, MySetItem b) {
return a.value == b.value;
}
int main() {
// 初始化你的两个集合
MySetItem set1[] = {1, 2, 3, 4, 5};
MySetItem set2[] = {4, 5, 6, 7, 8};
// 将集合转换为`std::set`
std::set<MySetItem, decltype(compare)> set1_set(compare);
for (MySetItem item : set1) {
set1_set.insert(item);
}
std::set<MySetItem, decltype(compare)> set2_set(compare);
for (MySetItem item : set2) {
set2_set.insert(item);
}
// 计算交集
std::set<MySetItem, decltype(compare)> intersection(set1_set.begin(), set1_set.end());
intersection.insert(intersection.end(), set2_set.begin(), set2_set.end());
// 构建交集字符串
char result[100];
size_t len = 0;
for (const auto &item : intersection) {
if (len > 0) {
result[len++] = ' ';
}
result[len++] = static_cast<char>(item.value); // 将整数值转换为字符
}
result[len] = '\0'; // 结束字符串
printf("交集: ");
// 输出结果,最后一个数后面不加空格
for (size_t i = 0; i < len - 1; ++i) {
printf("%d", result[i]);
}
printf("%d\n", result[len - 1]);
return 0;
}
```
阅读全文