程序不知道哪里出问题了输出的结果没有逆序排序,希望能帮忙解答一下

问题遇到的现象和发生背景

程序不知道哪里出问题了输出的结果没有逆序排序,希望能帮忙解答一下
程序目的
设有一数列,包含10个数,要求程序先升序排好,从指定位置开始的n个数按逆序重新排序并输出新的完整数列吗,逆序处理要求用指针方法。

用代码块功能插入代码,请勿粘贴截图
#include<stdio.h>

int main()
{
    int a[10],i,j,n,sample,*p;
    printf("please enter 10 integers\n");
    for(i=0;i<10;i++){
        scanf("%d",&a[i]);
        getchar();
    }
    for(i=0;i<10;i++)
    for(j=0;j<10-j;j++){
        if(a[j]>a[j+1]){
            sample=a[j];
            a[j]=a[j+1];
            a[j+1]=sample;
        }
    }
    printf("please enter n\n");
    scanf("%d",&n);
    for(p=a+n-1,i=0,j=10-n;i<(10-n)/2;i++,j--){
        sample=*(p+i);
        *(p+i)=*(p+j);
        *(p+j)=sample;
    }
    for(p=a+n-1;p<(a+10);p++){
        printf("%d ",*p);
    }
}

运行结果及报错内容

img

我的解答思路和尝试过的方法
我想要达到的结果

int main()
{
    int a[10], i, j, n, sample, *p;
    printf("please enter 10 integers\n");
    for (i = 0; i < 10; i++)
    {
        scanf("%d", &a[i]);
        // getchar();
    }
    for (i = 0; i < 10; i++)
        for (j = 0; j < 9; j++) //
        {
            if (a[j] > a[j + 1])
            {
                sample = a[j];
                a[j] = a[j + 1];
                a[j + 1] = sample;
            }
        }
    //--- 辅助,可删
    for (p = a; p < (a + 10); p++)
    {
        printf("%d ", *p);
    }
    printf("\n");
    //--
    printf("please enter n\n");
    scanf("%d", &n);
    for (p = a + n - 1, i = 0, j = 10 - n; i < (10 - n) / 2; i++, j--)
    {
        sample = *(p + i);
        *(p + i) = *(p + j);
        *(p + j) = sample;
    }
    for (p = a; p < (a + 10); p++) //
    {
        printf("%d ", *p);
    }
}

img