codice:
#include <stdio.h>

/* La macro ARRSIZE consente di calcolare il numero di elementi di un array di cui siano note le dimensioni a compile-time */
#define ARRSIZE(arr)    (sizeof(arr)/sizeof(*(arr)))

/* Cerca un elemento in un vettore di int; restituisce l'indice dell'elemento o -1 castato a unsigned long se non ha trovato nulla */
unsigned long findInVector(int Value, int * Vector, size_t VectorSize);

/* Entrypoint */
int main(void)
{
    /* Vettore in cui andiamo a memorizzare gli elementi */
    int vector[5];
    /* Posizione corrente nel vettore */
    int pos;
    /* Ciclo che si ripete per ogni elemento del vettore */
    for(pos=0;pos<ARRSIZE(vector);pos++)
    {
        /* Acquisizione del numero */
        printf("Inserisci un numero per vector[%d]: ",pos);
        if(scanf("%d",&vector[pos])!=1)
        {
            /* Se la scanf restituisce un valore diverso da 1 significa che non è riuscita ad ottenere il numero (l'utente ha inserito una valore non numerico) */
            puts("Valore non valido.");
            /* Svuota il buffer di input */
            while(getchar()!='\n')
                ;
            /* Torna indietro di una posizione */
            pos--;
            /* Procede con la prossima iterazione */
            continue;
        }
        /* Cerca l'elemento nella parte di vettore finora caricata (escluso il valore corrente) */
        if(findInVector(vector[pos],vector,(size_t)pos)!=(unsigned long)-1)
        {
            /* Se lo trova notifica l'errore */
            puts("Numero gia' inserito.");
            /* Torna indietro di una posizione */
            pos--;
            /* Procede con la prossima iterazione */
            continue;
        }
    }
    /* Tutto ok */
    return 0;
}

/* Cerca un elemento in un vettore di int; restituisce l'indice dell'elemento o -1 castato a unsigned long se non ha trovato nulla */
unsigned long findInVector(int Value, int * Vector, size_t VectorSize)
{
    /* Posizione corrente */
    unsigned long pos;
    /* Ciclo che si ripete per ogni elemento del vettore */
    for(pos=0;pos<VectorSize;pos++)
    {
        /* Se il valore dell'elemento è uguale al valore da cercare la ricerca è finita */
        if(Vector[pos]==Value)
            return pos;
    }
    /* Se si arriva qui significa che non è stato trovato nulla */
    return (unsigned long)-1;
}