在C++中编辑代码用户输入一组数据(不超过1000个),删除掉其中的重复数据,输出数组中剩余元素个数(假设为n个),并按照原顺序输出所有数字的首次出现。
时间: 2024-04-30 21:23:53 浏览: 97
C++将数字从键盘读入数组并统计数字出现的次数,元素从大到小的顺序排序
思路:
1. 定义一个数组,用于存储输入的数据。
2. 定义一个变量count,用于记录数组中不重复的元素个数,初始化为0。
3. 依次读入数据,将每个数与已经存储的数比较,如果相同则跳过,不同则存储到数组中并将count加1。
4. 输出count,表示不重复的元素个数。
5. 遍历数组,将每个元素输出,注意输出的是首次出现的元素,需要判断该元素是否已经输出过。
代码实现:
```c
#include <stdio.h>
#define MAX_SIZE 1000
int main() {
int arr[MAX_SIZE]; // 定义数组
int count = 0; // 计数器
int i, j, flag; // 循环变量和标记
// 读入数据
for (i = 0; i < MAX_SIZE; i++) {
scanf("%d", &arr[i]);
// 判断是否已经存储过该元素
flag = 0;
for (j = 0; j < i; j++) {
if (arr[j] == arr[i]) {
flag = 1;
break;
}
}
// 如果不重复则存储,并将计数器加1
if (!flag) {
count++;
} else {
i--; // 如果重复,需要将当前位置回退,重新读入数据
}
}
// 输出不重复的元素个数
printf("%d\n", count);
// 遍历数组,按照原顺序输出首次出现的元素
for (i = 0; i < MAX_SIZE; i++) {
flag = 0;
for (j = 0; j < i; j++) {
if (arr[j] == arr[i]) {
flag = 1;
break;
}
}
if (!flag) {
printf("%d ", arr[i]);
}
}
return 0;
}
```
注意事项:
1. 输入的数据数量不能超过1000,需要定义一个足够大的数组,否则可能会发生数组越界的错误。
2. 判断元素是否重复时,需要从已经存储的元素中逐个比较,时间复杂度较高,如果数据量较大,可以考虑使用哈希表等数据结构来优化。
阅读全文