编程实现在一维数组中插入、删除和查找一个元素的操作 用函数实现,每个功能定义一个函数。
时间: 2024-03-05 16:48:43 浏览: 58
好的,下面是三个函数的实现:
```c
#include <stdio.h>
// 插入元素函数
void insert(int arr[], int *size, int pos, int num) {
if (pos < 0 || pos > *size) {
printf("插入位置不合法!\n");
return;
}
for (int i = *size - 1; i >= pos; i--) {
arr[i + 1] = arr[i];
}
arr[pos] = num;
(*size)++;
}
// 删除元素函数
void remove_num(int arr[], int *size, int num) {
int flag = 0;
for (int i = 0; i < *size; i++) {
if (arr[i] == num) {
for (int j = i; j < *size - 1; j++) {
arr[j] = arr[j + 1];
}
flag = 1;
(*size)--;
i--;
}
}
if (flag == 0) {
printf("数组中没有要删除的元素!\n");
}
}
// 查找元素函数
int find(int arr[], int size, int num) {
for (int i = 0; i < size; i++) {
if (arr[i] == num) {
return i;
}
}
return -1;
}
// 测试函数
int main() {
int arr[100] = {1, 2, 3, 4, 5};
int size = 5;
int pos, num;
// 测试插入函数
printf("插入前:");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
printf("请输入要插入的位置和数字:");
scanf("%d %d", &pos, &num);
insert(arr, &size, pos, num);
printf("插入后:");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
// 测试删除函数
printf("删除前:");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
printf("请输入要删除的数字:");
scanf("%d", &num);
remove_num(arr, &size, num);
printf("删除后:");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
// 测试查找函数
printf("请输入要查找的数字:");
scanf("%d", &num);
int index = find(arr, size, num);
if (index == -1) {
printf("数组中没有该数字!\n");
} else {
printf("数字 %d 在数组中的下标是 %d\n", num, index);
}
return 0;
}
```
这里插入、删除和查找函数都需要传入数组和数组的大小,因此使用指针来传递数组大小。在插入函数中,我们需要判断插入的位置是否合法,如果插入位置小于0或大于数组长度,则插入位置不合法。在删除函数中,我们需要遍历整个数组,如果找到要删除的元素,则将该元素后面所有的元素向前移动一位,并将数组大小减1。在查找函数中,我们需要遍历整个数组,如果找到要查找的元素,则返回该元素在数组中的下标,否则返回-1。
希望这个示例能对你有所帮助!
阅读全文