用C语言编写一个删除程序,已经有一个有序数组,要求从键盘输入要删除的数,构建一个del函数用来删除,并从主函数中上传要删除的数,最后将有序的数组打印出来
时间: 2024-10-20 22:10:14 浏览: 43
在C语言中,你可以通过迭代的方式来创建一个简单的`del`函数,用于删除指定位置的元素并保持数组有序。以下是一个基本的实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义数组结构
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int size;
} Array;
// 插入元素到已排序数组末尾
void insert(int* arr, int value) {
if (arr->size == MAX_SIZE) {
printf("Array is full.\n");
return;
}
arr[arr->size] = value;
arr->size++;
}
// 删除指定位置的元素(假设数组下标从0开始)
void del(Array* arr, int index) {
if (index >= arr->size || index < 0) {
printf("Invalid index.\n");
return;
}
// 将最后一个元素移到待删除的位置
for (int i = arr->size - 1; i > index; i--) {
arr[i] = arr[i - 1];
}
// 减小数组大小
arr->size--;
}
// 主函数示例
int main() {
Array arr = { .data = {}, .size = 0 };
// 输入元素并插入到数组
while (true) {
int num;
printf("Enter a number to add or 'q' to quit: ");
scanf("%d", &num);
if (num == 'q') break;
insert(&arr.data, num);
}
// 删除指定数字
int delete_index;
printf("Enter the index of the number you want to delete: ");
scanf("%d", &delete_index);
del(&arr, delete_index);
// 打印剩余的有序数组
printf("Sorted array after deletion: \n");
for (int i = 0; i < arr.size; i++) {
printf("%d ", arr.data[i]);
}
printf("\n");
return 0;
}
```
在这个例子中,我们首先定义了一个`Array`结构体,包含一个整型数组和数组的实际大小。`insert`函数用于添加新元素,`del`函数则删除指定索引处的元素。主函数中,用户可以连续输入元素,直到选择退出;然后删除指定元素并打印出结果。
注意:这个实现假定数组总是可以容纳更多的元素,如果需要限制数组大小,可以在`insert`函数中添加检查。另外,此代码未处理可能出现的错误情况,例如删除空数组中的元素。实际项目中,你应该增加适当的错误处理和边界条件检查。
阅读全文