数组中插入一个数,重新排序要求stdio.h

已知整型数组a长度为20,其中保存了15个数,并且这些数在数组中有序存放的。现插入一个数b,保存到数组a中,要求插入的数不能改变数组a中原来的顺序。例如数组a中保存数为1,3,5,24,26插入一个数9后,数组为1,3,5,9,24,26。要求使用c语言stdio.h

供参考:

#include<stdio.h>
int main()
{
    int a[21] = { 1,3,5,24,26,30,34,42,48,55,60,61,68,70,77};
    int i, j, p, len;
    len = sizeof(a) / sizeof(a[0])-1;
    printf("原数组为:\n");
    for (i = 0; i < len; i++)
        if (a[i] != 0)
            printf("%4d", a[i]);
    printf("\n输入要插入的数:\n");
    scanf("%d", &p);
    for (i = len-1; i >= 0; i--)//比较选择放置的位置 
    {
        j = i + 1;
        if (p > a[i] && a[i] != 0)
        {
            a[j] = p;
            break;
        }
        else {
            a[j] = a[i];
            if (i == 0)
                a[i] = p;
        }
            
    }
    printf("输出插入之后的序列:\n");
    for (i = 0; i <= len; i++)
        if (a[i] != 0)
            printf("%4d", a[i]);
    return 0;
}

#include <stdio.h>

int main(int argc, char *argv[])
{
    int a[20];
    int i;
    int j = 0;
    int num = 17;//需要插入的数
    for(i = 0; i < 30; i+=2){//插入有序排列的15个数  
        a[j] = i;
        j++;
    }
    for(j = 0; j < 15; j++){
        printf("%d ", a[j]);
    }
    printf("\n");
    //插入
    
    for(i = 0; i < 15; i++){
        if(a[i] > num){
            break;        
        }        
    }
    for(j = 15; j > i; j--){
        a[j] = a[j-1];
    }
    printf("\n");
    a[i] = num;
    //打印排序之后的数组
    for(j = 0; j < 16; j++){
        printf("%d ", a[j]);
    }
    printf("\n");    
}