Scritto al volo, quindi con possibili errori.

codice:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>


#define MAX 100


/* funzione che ritorna 1 se "num" e' presente in "array"
 * e 0 se invece non e' presente */
int controlla_presenza(int *array, int size, int num)
{
    int i;
    for(i=0; i<size; ++i)
    {
        if(array[i] == num)
            return 1;
    }
    return 0;
}


/* funzione che genera un array di numeri casuali e non ripetuti */
int * genera_casuali(int size)
{
    int *array = (int *) malloc(size * sizeof(int));
    int i, generato, riempito = 0;


    for(i=0; i<size; ++i)
    {
        array[i] = 0;       /* inizializzazione a zero */
    }


    for(i=0; i<size; ++i)
    {
        do
        {
            generato = rand() % MAX + 1;
        } while(controlla_presenza(array, size, generato) == 1);
        array[riempito++] = generato;
    }


    return array;
}




void stampa_array(int *array, int size)
{
    int i;
    for(i=0; i<size; ++i)
        printf("%d\n", array[i]);
}


int main()
{
    srand(time(NULL));
    int size;


    printf("Inserire dimensione: ");
    scanf("%d", &size);


    int *casuali = genera_casuali(size);
    stampa_array(casuali, size);


    return 0;
}