c++,萌新问下怎么在一个数组特定位置赋值?

列如一个数组a[5],我想在 ( )()(3)()(),第三个位置赋值3,然后用for循环scanf输入4个值时,自动只赋予空缺的项,3的值和位置都不变。

#include<stdio.h>
int main(){
    int a[5];
    a[2]=3;
    for(int i=0;i<5;i++){
        if(i==2)continue;
        scanf("%d",a+i);
    }
    for(int i=0;i<5;i++) printf("%d ",a[i]);
}