用C语言程序设计,设有一个已排好序的数组(若你的学号为奇数,则考虑升序,否则降序),今输入一个数,要求按原来排序的规律将它插入到数组中。
时间: 2024-02-21 13:02:02 浏览: 52
好的,这是一个比较经典的问题,我们可以通过遍历数组找到插入位置,然后将插入位置后面的元素全部后移一位,最后将新元素插入到插入位置。下面是一份示例代码:
```c
#include <stdio.h>
#define MAX_SIZE 10
// 奇数升序,偶数降序
#ifdef ODD_ASC_EVEN_DESC
#define COMPARE(x, y) ((x) > (y))
#else
#define COMPARE(x, y) ((x) < (y))
#endif
void insert(int arr[], int size, int num) {
int i, j;
for (i = 0; i < size; i++) {
if (COMPARE(arr[i], num)) {
break;
}
}
for (j = size - 1; j >= i; j--) {
arr[j + 1] = arr[j];
}
arr[i] = num;
}
int main() {
int arr[MAX_SIZE] = {1, 3, 5, 7, 9};
int size = 5;
int num, i;
printf("请输入一个数:");
scanf("%d", &num);
insert(arr, size, num);
size++;
printf("插入后的数组为:");
for (i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
在上面的代码中,我们定义了一个 `MAX_SIZE` 常量表示数组的最大长度,然后通过宏定义来控制奇数升序还是偶数降序。在 `insert` 函数中,我们首先遍历数组找到插入位置 `i`,然后将插入位置后面的元素全部后移一位,最后将新元素插入到插入位置。在 `main` 函数中,我们首先输入一个要插入的数 `num`,然后调用 `insert` 函数插入这个数,并输出插入后的数组。
阅读全文