Poi, per le tue prove, ti consiglio di non chiedere in input i valori ogni volta, ma di scrivere
int a[D1] = {2,3,2,1,4,2,1,3,0,8};
int b[D1];
int d =-3;
int c=0;
e continuare direttamente con il codice che avrà la tua funzione.
Infine, dopo il primo ciclo (in cui esaminerai ogni a[k]) con
for(k=0;k<D1;k++)
ti consiglio di impostare un altro ciclo, che dovrà andare da un minimo ad un massimo.
Troverai questo minimo e massimo sommando d a k, ad esempio
v1=k+d;
Se v1 sarà minore di k, allora sarà il minimo e k il massimo, altrimenti sarà al contrario.
Se v1 sarà il minimo non dovrà essere minore di 0 (altrimenti lo imposterai a 0); se sarà il massimo non dovrà essere maggiore di (D1-1) altrimenti lo imposterai a (D1-1). Potrai impostare il ciclo con un contatore w che andrà dal minimo al massimo e confronterai a[k] con a[w] ...
Continuerai tu ...