c语言输入一串含有重复数据的乱序整数,能够删除重复数据,不能使用指针
时间: 2024-10-17 14:07:57 浏览: 14
在C语言中,如果你不能使用指针并且需要删除一串乱序整数中的重复数据,你可以采用数组和数组下标的方式来实现。由于不能直接修改元素位置,可以创建一个新的数组,遍历原数组,在新数组中只添加未见过的值。这里是一个简单的示例:
```c
#include <stdio.h>
#define MAX_SIZE 100
void removeDuplicates(int arr[], int n) {
if (n == 0 || arr[0] == arr[1]) {
return; // 如果数组为空或者第一个元素就是第二个元素,直接返回
}
int new_size = 1;
for (int i = 1; i < n; ++i) {
if (arr[i] != arr[new_size - 1]) { // 如果当前元素不同于新数组最后一个元素
arr[new_size++] = arr[i]; // 将其添加到新数组
}
}
arr[new_size] = 0; // 用0表示新数组结束
}
int main() {
int input[MAX_SIZE];
printf("Enter a series of integers with duplicates:\n");
for (int i = 0; scanf("%d", &input[i]) && i < MAX_SIZE - 1; ++i) {}
removeDuplicates(input, sizeof(input) / sizeof(input[0]));
printf("The unique sorted integer array is: \n");
for (int i = 0; input[i] != 0; ++i) {
printf("%d ", input[i]);
}
return 0;
}
```
在这个例子中,我们首先读取用户输入的整数序列,然后调用`removeDuplicates`函数,该函数通过比较新旧数组元素来去除重复,并更新新数组的大小。最后输出的是去重并保持原始顺序的新数组。
阅读全文