在一个排好序的数组中添加一个数使它按原来的顺序输出 运行结果有有关问题 大神帮帮小弟我

在一个排好序的数组中添加一个数使它按原来的顺序输出 运行结果有问题 大神帮帮我
#include<stdio.h>
void add(int num[5]);
int main()
{
    int num[5]={2 , 4 , 6 , 8 , 9} , i ;
    add (num);

    for(i=0;i<6;i++)
    printf("%d",num[i]);


}
void add(int num[5])
{
    int i , j , a ,k ;
    printf( "输入要插入的数=\n" ) ;
    scanf( "%d" , &a );
    for(i=0;i<5;i++)
    {
        if(a<num[i])
        break;
    }
    for(j=5;j>=i+1;j--)
    {   k=j-1;
       num[j]=num[k];

    }  num[i]=a;}    但是运行结果最后一个数总是5
------解决思路----------------------
数组越界。

你的数组只有 5 个位置,再插入一个数就不够用了。
------解决思路----------------------
#include<stdio.h>

void add(int num[6]);


int main()
{
int i;
    int num[6]={2 , 4 , 6 , 8 , 9};

    add (num);
    for(i=0;i<6;i++)
{
    printf("%d",num[i]);
}

return 0;
}
void add(int num[6])
{
    int i , j , a ,k ;

    printf( "输入要插入的数=\n" ) ;
    scanf_s( "%d" , &a );

    for(i=0;i<5;i++)
    {
        if(a<num[i])
        break;
    }
    for(j=5;j>=i+1;j--)
    {   k=j-1;
       num[j]=num[k];

    } 
num[i]=a;
}         

// 但是运行结果最后一个数总是5
------解决思路----------------------
引用:
#include<stdio.h>

void add(int num[6]);


int main()
{
int i;
    int num[6]={2 , 4 , 6 , 8 , 9};

    add (num);
    for(i=0;i<6;i++)
{
    printf("%d",num[i]);
}

return 0;
}
void add(int num[6])
{
    int i , j , a ,k ;

    printf( "输入要插入的数=\n" ) ;
    scanf_s( "%d" , &a );

    for(i=0;i<5;i++)
    {
        if(a<num[i])
        break;
    }
    for(j=5;j>=i+1;j--)
    {   k=j-1;
       num[j]=num[k];

    } 
num[i]=a;
}         

// 但是运行结果最后一个数总是5


没有啊,可以正常运行,插入数后重新排列好