有一个已排好的数据(2,4,6,8,10,12,14,16,18),要求输入一个数9之后,按原来的排序规律将它插入数组中
供参考:
#include<stdio.h>
#define N 10
int main()
{
int n = 9, m, i, a[N]={2,4,6,8,10,12,14,16,18};
//scanf("%d", &n); //n:有序数列的个数
//for (i = 0; i < n; i++)// 输入n个有序数列元素
// scanf("%d", &a[i]);
scanf("%d", &m); //m:待插入的数
if (m > a[n - 1]) { //插入操作
a[n] = m;
}
else {
for (i = n; m < a[i - 1] && i > 0; i--) {
a[i] = a[i - 1];
}
a[i] = m;
}
for (i = 0; i < n + 1; i++)//输出 插入数 m 后的有序数列
printf("%4d", a[i]);
printf("\n");
return 0;
}
#include <stdio.h>
#define N 10
int main(){
//原数组是升序
int a[N]={2,4,6,8,10,12,14,16,18};
int n,num;
printf("原数组的数为:\n");
for(n=0;n<N-1;n++)
printf("%d ",a[n]);
printf("\n");
printf("请输入一个数:\n");
scanf("%d",&num);
for(n=0;n<=N-2;n++){
if(a[n]<num&&num<=a[n+1]){
for(int j=N-1;j>=n+2;j--){
a[j]=a[j-1];
}
a[n+1]=num;
}
}
printf("\n");
printf("现数组的数为:\n");
for(n=0;n<=N-1;n++){
printf("%d ",a[n]);
}
printf("\n");
return 0;
}