请用c语言应用数组存储用户输入的10个整数,编写算法将该数组按照从小到大的顺序排列好。用户再输入1个整数,编写代码把它插入原数列中,要求仍然保持从小到大有序。 编写程序时应考虑到所插入数的各种可能性(比原来所有的数都小;比原来所有的数都大;在最大数和最小数之间)。
时间: 2023-06-27 09:04:47 浏览: 105
以下是用C语言实现的算法:
```c
#include <stdio.h>
#define MAX_SIZE 10
void sort_array(int arr[], int size);
void insert_into_array(int arr[], int size, int num);
int main() {
int arr[MAX_SIZE];
int size = MAX_SIZE;
int num;
printf("请输入%d个整数:\n", size);
for (int i = 0; i < size; i++) {
scanf("%d", &arr[i]);
}
sort_array(arr, size);
printf("原数组排序后:\n");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
printf("请输入要插入的整数:\n");
scanf("%d", &num);
insert_into_array(arr, size, num);
size++;
printf("新数组排序后:\n");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
void sort_array(int arr[], int size) {
int temp;
for (int i = 0; i < size - 1; i++) {
for (int j = i + 1; j < size; j++) {
if (arr[i] > arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
void insert_into_array(int arr[], int size, int num) {
int i;
for (i = size - 1; i >= 0; i--) {
if (arr[i] > num) {
arr[i + 1] = arr[i];
} else {
break;
}
}
arr[i + 1] = num;
}
```
首先,我们定义了一个数组 `arr`,大小为 `MAX_SIZE`,即10个整数。然后,我们使用 `for` 循环读取用户输入的每个整数,并将它们存储在数组中。
接下来,我们调用 `sort_array` 函数将数组按照从小到大的顺序排列。该函数使用嵌套的 `for` 循环来比较数组中的每对元素,如果前面的元素比后面的元素大,则交换它们的位置。
然后,我们提示用户输入要插入的整数,并调用 `insert_into_array` 函数将它插入到数组中。该函数首先使用一个 `for` 循环来找到在哪个位置将新元素插入到数组中,然后使用另一个 `for` 循环将该位置后面的元素向右移动一个位置,以便给新元素腾出空间。
最后,我们将数组中的所有元素打印出来,以验证插入操作是否成功,并且数组仍然保持从小到大的有序性。
阅读全文