看你的代码显然没分清数组下标和数组元素
数组下标就是位置,如下图蓝色数字,从0开始标序号
数组元素就是存储的内容,比如下标为0的位置里存储的是数字1,arr[0]=1;下标为4的位置中存储的是数字5,arr[4]=5

for循环输入数组其实就是把过程简化了,不然得重复写9遍scanf,从scanf("%d", &arr[0]);一直写到scanf("%d", &arr[9]);
如果改用循环变量 i 来遍历下标,只需要在循环体写scanf("%d", &arr[i]);
同理,删除某个位置a,只需要用for循环判断a==i,确定a是哪个下标位置
因为C语言数组不能动态删除元素,只能用“后面覆盖前面”来实现删除,即arr[i]=arr[i+1];
除此之外还要定义一个变量len来表示数组长度,输出时只输出到len,而不是10,不然就会有元素重复输出
比如删除的位置为1,则a==1,用“后面覆盖前面”,如下图,a[1]被覆盖为a[2]中存储的数字3(下图棕红色数字)

a[2]也是被a[3]覆盖

以此类推,直到最后a[8]被a[9]覆盖

此时删除完成,数组长度len需要减一
输出时按for(i=0; i<len; i++)来执行