Ciao cri_cri, anche io sono alle prime armi con il C, un consiglio che ti posso dare e fare un controllo condizionale subito dopo il secondo for,( if (i==(n/2) || i==(n+1/2)) printf("*");) ma è un metodo poco ortodosso, funziona solo per n piccolo, un altro metodo sarebbe stampare un rombo di altezza 2n-1, quindi sempre dispari, in modo da non avere problemi di stampa, oppure fare un controllo e vedere se il dato in input % 2 = 0 lo incremento di 1 altrimenti non faccio niente.
Per fare il programma ragiono un po'!!! Per n = 5
All'inizio stampa 2(barra verticali) 1 * e 2(barre verticali) ||*||
Poi decremento (|) di 2 e incremento (*) di 2 |***|
poi decremento ancora(|) di 2, quindi ne stampo 0, e incremento gli * di 2, quindi stampo n *
Dopo di che, incremento di 2 le (|) e decremento di 2 gli *
Questo è l'unico metodo che mi viene in mente con le basi che ho, spero di esserti stato di aiuto poi più tardi posto il codice