#C语言输入 n个整数,查找井删除 重复的数字,打印結果。要求用到指针相关知识
时间: 2024-02-11 10:05:05 浏览: 84
以下是使用指针实现输入 n 个整数,查找并删除重复数字的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h> // 用于动态申请内存
int main() {
int n;
printf("请输入整数个数:\n");
scanf("%d", &n);
int *arr = (int *)malloc(sizeof(int) * n); // 动态申请内存
printf("请输入%d个整数:\n", n);
for (int i = 0; i < n; i++) {
scanf("%d", arr + i); // 使用指针访问数组元素
}
// 查找并删除重复数字
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n;) {
if (*(arr + j) == *(arr + i)) { // 使用指针访问数组元素
for (int k = j; k < n; k++) {
*(arr + k) = *(arr + k + 1); // 使用指针修改数组元素
}
n--; // 由于删除了一个元素,所以 n 需要自减
} else {
j++;
}
}
}
// 打印剩下的数字
printf("剩下的数字为:\n");
for (int i = 0; i < n; i++) {
printf("%d ", *(arr + i)); // 使用指针访问数组元素
}
printf("\n");
free(arr); // 释放动态申请的内存
return 0;
}
```
这段代码与前两段代码类似,只是在申请数组内存时使用了动态内存分配函数 malloc,并在最后释放了申请的动态内存。在数组访问时,使用了指针的方式访问和修改数组元素,即 `*(arr + i)` 代替了 `arr[i]`,更加直观地表示了访问的是数组的第 i 个元素。需要注意的是,在动态内存分配函数 malloc 中,需要将申请的内存大小设置为 `sizeof(int) * n`,以确保申请的内存空间足够存储 n 个整数。
阅读全文