Ci credo che non funziona.
Se scrivi cosi', all'uscita delle funzioni inserimento(), scansione() e pari() nelle variabili che utilizzi come parametro avrai gli stessi valori che avevi in partenza, poiché tali variabili vengono passate per COPIA e non per RIFERIMENTO. Dovresti piuttosto usare una forma del tipo:
void scansione(int *z, int *i, int *l)
ed invocarla da main() con
scansione(&z,&i,&l);
perché possa funzionare.
Altra cosa: volevi rendere locali solo le variabili l,n,i e z o anche i vettori?![]()