C语言的printf无法输出,求解

刚刚学c十来天,看书想写个排序大小的程序,最后的printf无法输出

#include
int main()
{
    int i,j,k=1,n;
    
    
    printf("一共有多少个数:");
    scanf("%d",&n);
    int num[n+1];
    for(i=0;iprintf("\n第%d个:",i+1);
        scanf("%d",&num[i]);
    }
    //输入
    
     
    for(i=1;i2;i++)
    {
        k=k*i;
    }
    //k的阶乘
    
    for(i=0;i<=k;i++)          
    {                         
        if(num[i]>num[i+1])
        {
            j=num[i];
            num[i]=num[i+1];
            num[i+1]=j;
        }
    }
    //数据交换
     printf("\n排序为:");
     fflush(stdout);
     for(i=0;i//这里无法输出 
     {
         printf("%d \n",num[i]);
         fflush(stdout);
     }
     //输出 
    
    return 0;

删了大小比较部分后面可以正常输出,不删就输出不了,感到疑惑
求解答

数组越界访问崩溃了