编写一个程序,从键盘输入两组整数(可以看作两个集合),分别输出 同属于两组的整数(即两个集合的交集)、属于至少一组的整数(即两个集合的并 集)、属于第一组但不属于第二组的整数(即两个集合的差集)。要求输出按照从大 到小的顺序。 提示:可使用 sort、 set_intersection、 set_union、 set_difference 等 STL 函数, 例 如 https://www.cplusplus.com/reference/algorithm/set_intersection/ 输入样例: 1 5 3 2 9 7 4 2 3 1 5 输出样例: 交集 5 3 2 1 并集 9 7 5 4 3 2 1 差集 9
时间: 2024-02-26 10:52:58 浏览: 99
好的,以下是 C++ 的代码实现:
```cpp
#include <iostream>
#include <algorithm>
#include <vector>
#include <set>
using namespace std;
int main() {
// 输入集合 A
int n1;
cin >> n1;
vector<int> A(n1);
for (int i = 0; i < n1; i++) {
cin >> A[i];
}
// 输入集合 B
int n2;
cin >> n2;
vector<int> B(n2);
for (int i = 0; i < n2; i++) {
cin >> B[i];
}
// 按照从大到小排序
sort(A.rbegin(), A.rend());
sort(B.rbegin(), B.rend());
// 交集
vector<int> C1;
set_intersection(A.begin(), A.end(), B.begin(), B.end(), back_inserter(C1));
cout << "交集 ";
for (int i : C1) {
cout << i << " ";
}
cout << endl;
// 并集
vector<int> C2;
set_union(A.begin(), A.end(), B.begin(), B.end(), back_inserter(C2));
cout << "并集 ";
for (int i : C2) {
cout << i << " ";
}
cout << endl;
// 差集
vector<int> C3;
set_difference(A.begin(), A.end(), B.begin(), B.end(), back_inserter(C3));
cout << "差集 ";
for (int i : C3) {
cout << i << " ";
}
cout << endl;
return 0;
}
```
输入样例:
```
4
1 5 3 2
5
9 7 4 2 3
```
输出样例:
```
交集 5 3 2 1
并集 9 7 5 4 3 2 1
差集 9
```
阅读全文