删除整形数组中最小值(C语言)

请编写一道程序,该程序的功能是找出并且删除一维整形数组a[100]中的最小值元素.要求如下:
1.数组个元素通过键盘输入获得初始值.
2. 所有对数组元素的引用必须通过指针完成

#include <stdio.h>
#include <limits.h> // 包含极值宏定义


// 1 输入并查找最小值  2.删除最小值  3.输出删除后的效果
int main () {
    int a[100], *p, i = 0;
    int min = INT_MAX, min_sub; // min 存储最小值, min_sub存储最小值下标
    p = a; // 指针指向数组
    do {
        printf("请输入第%d个元素:", i + 1);
        scanf("%d", p + i);
        if (*(p + i) < min && *(p + i) != -1) {
            min = *(p + i); // 存储最小值以及最小值下标
            min_sub = i;
        }
    } while (*(p + i++) != -1);

    // 删除最小值(使用覆盖的方法)
    for (int j = min_sub + 1; j < i; j++) {
        *(p + j - 1) = *(p + j); // 后面元素依次往前挪进行覆盖
    }

    // 输出验证
    for (int j = 0; j < i - 1; j++) {
        printf("%d\t\n", *(p + j));
    }
    return 0;
}