c++:从键盘输入数据的个数n及这n个数(包含重复数据),要求删除其中的重复数据,并输出去重后的数据。
时间: 2024-03-18 21:38:56 浏览: 17
好的,这是一个简单的去重问题,可以使用 C++ 的 STL 中的 set 容器来解决。
具体的实现过程如下:
```cpp
#include <iostream>
#include <set>
using namespace std;
int main() {
int n;
cin >> n;
set<int> nums; // 定义一个 set 容器存储去重后的数据
for (int i = 0; i < n; i++) {
int x;
cin >> x;
nums.insert(x); // 将输入的数据插入到 set 容器中
}
// 遍历 set 容器,输出去重后的数据
for (auto it = nums.begin(); it != nums.end(); ++it) {
cout << *it << " ";
}
cout << endl;
return 0;
}
```
这里使用了 C++11 中的 auto 关键字,可以自动推导出迭代器的类型,方便代码的编写。
相关问题
c++:从键盘输入数据的个数n及这n个数(包含重复数据),要求删除其中的重复数据,并输出去重后的数据。要求:用指针操作数组。
好的,这是一个可以用指针操作数组来解决的去重问题。
具体的实现过程如下:
```cpp
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int *nums = new int[n]; // 动态分配数组空间,存储输入的数据
int len = 0; // 记录不重复数据的个数
for (int i = 0; i < n; i++) {
int x;
cin >> x;
bool flag = true;
for (int j = 0; j < len; j++) {
if (nums[j] == x) {
flag = false; // 如果已经存在相同的数据,不进行插入
break;
}
}
if (flag) {
nums[len++] = x; // 将不重复的数据插入到数组中
}
}
// 遍历数组,输出去重后的数据
for (int i = 0; i < len; i++) {
cout << nums[i] << " ";
}
cout << endl;
delete[] nums; // 释放数组空间
return 0;
}
```
这里使用了动态分配数组空间来存储输入的数据,使用一个变量 `len` 记录不重复数据的个数,并依次将不重复的数据插入到数组中。遍历数组,输出去重后的数据。注意需要在程序结束前释放动态分配的数组空间,避免内存泄漏。
c++:从键盘输入数据的个数n及这n个数(包含重复数据),要求删除其中的重复数据,并输出去重后的数据。要求:用指针操作数组。
好的,这是一个比较经典的数组去重题目,以下是C++的代码实现:
```cpp
#include <iostream>
using namespace std;
int main() {
int n;
cout << "请输入数据个数n:";
cin >> n;
int* arr = new int[n]; // 动态分配数组内存
cout << "请输入" << n << "个整数:" << endl;
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
int* p = arr;
int* q = arr;
for (int i = 0; i < n; i++) {
if (*p != *q) {
*(++p) = *q;
}
q++;
}
cout << "去重后的数组为:";
for (int i = 0; i <= p - arr; i++) {
cout << arr[i] << " ";
}
delete[] arr; // 释放动态分配的数组内存
return 0;
}
```
运行结果如下:
```
请输入数据个数n:8
请输入8个整数:
1 2 3 4 2 3 5 6
去重后的数组为:1 2 3 4 5 6
```
上面的代码中,首先通过 `new` 动态分配了一个大小为 `n` 的数组 `arr`,然后用指针 `p` 和 `q` 分别指向数组的开头,遍历整个数组,将不重复的元素移动到数组的前面,最后用指针 `p` 指向的位置作为新数组的末尾。最后通过 `delete` 释放了动态分配的内存。