c++编程实现:从键盘输入包含m个整数的集合存入数组a中、包含n个整数的集合存入数组b中,求a和b的并集c。要求:用指针操作数组。
时间: 2024-02-27 12:53:00 浏览: 84
利用指针和数组实现两个集合的并交操作
下面是使用 C++ 编写的代码实现,和上面的 C 代码实现类似:
```c++
#include <iostream>
using namespace std;
int main()
{
int m, n, i, j, k;
int *a, *b, *c;
// 输入数组a和b的元素个数
cout << "请输入集合a的元素个数m:";
cin >> m;
cout << "请输入集合b的元素个数n:";
cin >> n;
// 动态分配数组a、b和c的内存空间
a = new int[m];
b = new int[n];
c = new int[m + n];
// 输入数组a和b的元素值
cout << "请输入集合a的元素值:\n";
for (i = 0; i < m; i++)
cin >> a[i];
cout << "请输入集合b的元素值:\n";
for (i = 0; i < n; i++)
cin >> b[i];
// 求并集c
i = 0; j = 0; k = 0;
while (i < m && j < n) {
if (a[i] < b[j]) {
c[k++] = a[i++];
} else if (a[i] > b[j]) {
c[k++] = b[j++];
} else { // a[i] == b[j]
c[k++] = a[i++];
j++;
}
}
while (i < m)
c[k++] = a[i++];
while (j < n)
c[k++] = b[j++];
// 输出并集c的元素值
cout << "集合a和集合b的并集为:\n";
for (i = 0; i < k; i++)
cout << c[i] << " ";
cout << endl;
// 释放动态分配的内存空间
delete[] a;
delete[] b;
delete[] c;
return 0;
}
```
这个程序中,我们也使用了指针操作数组,比如:
```c++
a = new int[m];
```
这里使用了 `new` 运算符动态分配了数组 `a` 的内存空间,然后使用指针 `a` 来访问数组元素。
```c++
while (i < m && j < n) {
if (a[i] < b[j]) {
c[k++] = a[i++];
} else if (a[i] > b[j]) {
c[k++] = b[j++];
} else { // a[i] == b[j]
c[k++] = a[i++];
j++;
}
}
```
这里同样使用了指针 `a`、`b` 和 `c` 来访问数组元素,并且使用了指针 `i`、`j` 和 `k` 来遍历数组。
阅读全文