请应用数组存储用户输入的10个整数,编写算法将该数组按照从小到大的顺序排列好。用户再输入1个整数,编写代码把它插入原数列中,要求仍然保持从小到大有序。 编写程序时应考虑到所插入数的各种可能性(比原来所有的数都小;比原来所有的数都大;在最大数和最小数之间)。 输入格式: 请在一行中输入10整数,数据间以空格为间隔。 再在一行中输入1个待插入的整数。 输出格式: 将插入前后排好的有序序列分别在一行内输出,每个数的显示格式:占3位,右对齐。用c语言代码
时间: 2023-06-27 19:05:01 浏览: 84
以下是C语言代码实现:
```c
#include <stdio.h>
#define LENGTH 10 // 数组长度
int main() {
int arr[LENGTH]; // 存储输入的10个整数的数组
int insert_num; // 待插入的整数
int i, j;
// 输入10个整数
printf("请输入10个整数:\n");
for (i = 0; i < LENGTH; i++) {
scanf("%d", &arr[i]);
}
// 将数组按照从小到大的顺序排列好
for (i = 0; i < LENGTH - 1; i++) {
for (j = i + 1; j < LENGTH; j++) {
if (arr[i] > arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
// 输出排好序的数组
printf("排好序的数组为:\n");
for (i = 0; i < LENGTH; i++) {
printf("%3d", arr[i]);
}
printf("\n");
// 输入待插入的整数
printf("请输入待插入的整数:\n");
scanf("%d", &insert_num);
// 插入新数字
if (insert_num <= arr[0]) { // 待插入的数比最小的数还小
for (i = LENGTH - 1; i >= 1; i--) {
arr[i] = arr[i - 1];
}
arr[0] = insert_num;
} else if (insert_num >= arr[LENGTH - 1]) { // 待插入的数比最大的数还大
arr[LENGTH] = insert_num;
} else { // 待插入的数在最大数和最小数之间
for (i = 0; i < LENGTH - 1; i++) {
if (arr[i] <= insert_num && insert_num <= arr[i + 1]) {
for (j = LENGTH - 1; j >= i + 2; j--) {
arr[j] = arr[j - 1];
}
arr[i + 1] = insert_num;
break;
}
}
}
// 输出插入后的数组
printf("插入后的数组为:\n");
for (i = 0; i < LENGTH + 1; i++) {
printf("%3d", arr[i]);
}
printf("\n");
return 0;
}
```
注意,以上代码只是一种实现方法,有些细节上的处理方法可能与其他人不同。
阅读全文