用C语言编写:请应用数组存储用户输入的10个整数,编写算法将该数组按照从小到大的顺序排列好。用户再输入1个整数,编写代码把它插入原数列中,要求仍然保持从小到大有序。 编写程序时应考虑到所插入数的各种可能性(比原来所有的数都小;比原来所有的数都大;在最大数和最小数之间)。 输入格式: 请在一行中输入10整数,数据间以空格为间隔。 再在一行中输入1个待插入的整数。 输出格式: 将插入前后排好的有序序列分别在一行内输出,每个数的显示格式:占3位,右对齐。 输入样例: 10 9 8 7 6 5 4 3 2 1 8 输出样例: 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 8 9 10
时间: 2023-12-27 11:04:49 浏览: 95
以下是使用冒泡排序算法实现的代码:
```c
#include <stdio.h>
#define N 10 // 数组长度
void bubbleSort(int a[], int n); // 冒泡排序
void insertNum(int a[], int n, int num); // 插入数字
int main(){
int a[N]; // 定义数组
int num; // 待插入数字
printf("请输入10个整数:\n");
for(int i=0; i<N; i++){
scanf("%d", &a[i]); // 输入数字
}
printf("请输入待插入的整数:\n");
scanf("%d", &num); // 输入待插入数字
bubbleSort(a, N); // 排序
insertNum(a, N, num); // 插入数字
printf("插入前的有序序列为:\n");
for(int i=0; i<N; i++){
printf("%3d", a[i]); // 输出排序后的数组
}
printf("\n插入后的有序序列为:\n");
for(int i=0; i<N+1; i++){
printf("%3d", a[i]); // 输出插入数字后的数组
}
return 0;
}
void bubbleSort(int a[], int n){
int temp;
for(int i=0; i<n-1; i++){ // 外层循环n-1次
for(int j=0; j<n-i-1; j++){ // 内层循环n-i-1次
if(a[j] > a[j+1]){ // 如果前一个数大于后一个数
temp = a[j]; // 交换两个数
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
}
void insertNum(int a[], int n, int num){
int i;
if(num <= a[0]){ // 如果待插入数比原来所有的数都小
for(i=n-1; i>=0; i--){ // 将所有数向后移动一位
a[i+1] = a[i];
}
a[0] = num; // 插入数字
}else if(num >= a[n-1]){ // 如果待插入数比原来所有的数都大
a[n] = num; // 直接插入数字
}else{ // 待插入数字在最大数和最小数之间
for(i=0; i<n-1; i++){ // 找到待插入数字的位置
if(a[i] <= num && num <= a[i+1]){
break;
}
}
for(int j=n-1; j>=i+1; j--){ // 将所有数向后移动一位
a[j+1] = a[j];
}
a[i+1] = num; // 插入数字
}
}
```
输出结果与样例相同。
阅读全文