自己输入一组数组,然后在输入一个待删除的数,最后删除数组中最后一个等于该数的数,然后输出数组。c语言
时间: 2024-10-18 11:11:02 浏览: 26
在C语言中,你可以创建一个简单的函数来实现这个功能。下面是一个示例,它接收用户输入的数组、数组大小以及要删除的值,然后移除数组中最后一个等于给定值的元素:
```c
#include <stdio.h>
#include <stdlib.h> // 包含malloc和free,以防数组过大
// 函数声明
void removeLastOccurrence(int *arr, int size, int value);
// 主函数
int main() {
int arr[7], size, value, index;
printf("Enter the array elements (separated by spaces): ");
for (size = 0; scanf("%d", &arr[size]) != EOF && arr[size] != '\n'; size++); // 获取数组大小并读取元素
// 将数组大小加一,因为数组索引从0开始
size++;
printf("Enter the number to delete: ");
scanf("%d", &value);
// 删除最后一个出现的值
removeLastOccurrence(arr, size, value);
printf("Updated array: ");
for (index = 0; index < size; index++) {
printf("%d ", arr[index]);
}
// 回收内存(如果数组动态分配)
if (arr != NULL && arr != &arr[0]) {
free(arr);
}
return 0;
}
// 删除函数
void removeLastOccurrence(int *arr, int size, int value) {
int i, j;
for (i = size - 1; i >= 0; i--) {
if (arr[i] == value) {
for (j = i; j < size - 1; j++) {
arr[j] = arr[j + 1];
}
size--;
break;
}
}
}
```
在这个程序中,用户首先输入数组元素,然后输入要删除的值。`removeLastOccurrence`函数会扫描数组,找到最后一个出现的特定值并将其后面的元素向前移动一位,直到达到数组的末尾。请注意,此版本只处理整型数组,并且在处理大数组时可能会有性能问题,因为它包含两个循环。对于更大的数组,考虑使用其他数据结构如链表或更高效的搜索算法。
阅读全文