用C语言编写一个程序用到函数,将一个任意整数插入到一个已排序的整数数组中,插入后数组中的数仍然 保持有序,实现过程用指针处理。
时间: 2024-01-05 20:03:36 浏览: 82
好的,以下是用C语言编写的程序,可以将一个任意整数插入到一个已排序的整数数组中,插入后数组中的数仍然保持有序,实现过程用指针处理。
```c
#include <stdio.h>
void insert(int *arr, int *size, int num) {
if (*size == 0) {
arr[0] = num;
*size = 1;
} else {
int i;
for (i = *size - 1; i >= 0; i--) {
if (num < arr[i]) {
arr[i + 1] = arr[i];
} else {
break;
}
}
arr[i + 1] = num;
(*size)++;
}
}
int main() {
int arr[100], size = 0, num, i;
printf("Please enter the sorted array (separated by spaces, end with -1):\n");
while (1) {
scanf("%d", &num);
if (num == -1) {
break;
}
arr[size++] = num;
}
printf("Please enter the number to be inserted: ");
scanf("%d", &num);
insert(arr, &size, num);
printf("The array after insertion is: ");
for (i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
在这个程序中,我们首先定义了一个insert函数,用于将一个任意整数插入到一个已排序的整数数组中。然后,我们在主函数中通过调用insert函数来对从用户处输入的已排序整数数组进行插入操作,并输出插入后的结果。
在insert函数中,我们使用了指针来传递数组的指针和数组的大小。在函数内部,我们首先判断数组是否为空,如果为空,直接将待插入的数赋值为第一个元素;否则,我们从数组的末尾开始遍历,如果待插入的数小于当前元素,就将当前元素向后移动一位,直到找到第一个比待插入的数小的元素的位置。然后,我们将待插入的数插入到找到的位置后面,并将数组的大小加1。
下面是一个示例运行结果:
```
Please enter the sorted array (separated by spaces, end with -1):
1 3 5 7 9 -1
Please enter the number to be inserted: 4
The array after insertion is: 1 3 4 5 7 9
```
阅读全文