将数字按序插入数组(要求指针做法)

这是题目
有10-90这9个整数,已按升序存放于长度为10的一维数组中。要求将一整数35插入其中,并保持数组元素仍然有序。
输入说明:
整数35插入其中后
输出示例:
10 20 30 35 40 50 60 70 80 90
我的代码:

#include <stdio.h>
int main()
{
    int *p,a=35,i=0,t,n,j;
    int m[10]={10,20,30,40,50,60,70,80,90};
    p=&a;
    while(i<9)
    {
        if(*p>*(m+i))
        {
        i++;
        if(*p>*(m+8))
        *(m+9)=*p;
        }
        else if(*p<*(m+i))
        {
            *(m+i)=*p;
            for(j=8;j>i;j--)
            {
                t=*(m+j);
                *(m+j+1)=*(m+j);
            }
            break;
        }
    }
    for(i=0;i<10;i++)
    printf("%d ",*(m+i));
    return 0;
}

运行结果:

img


我知道i已经被赋值为4,怎样让if语句里的i变回3,才能输入40?
可以以我的基础改一下吗?

供参考:

//升序序列
#include<stdio.h>
#define N 10
int main()
{
    int n = 9, m, i, a[N]={10,20,30,40,50,60,70,80,90};

    //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;
}