Eliminação de duplicatas. No Capítulo 12, exploraremos a estrutura de dados de árvore de pesquisa binária de alta velocidade. Um dos recursos de uma árvore de pesquisa binária é que os valores duplicados são descartados quando são feitas inserções na árvore. Isso é conhecido como eliminação de duplicatas. Escreva um programa que produza 20 números aleatórios entre 1 e 20. O programa deverá armazenar todos os valores não duplicados em um array. Use o menor array possível para conseguir realizar essa tarefa.
Passo 1
Oiiii, tudo bom?
Vamos iniciar mais um programa :)
Inicialmente, colocamos as bibliotecas que precisaremos, a padrão em c 
Já olhando para o main, nomeamos algumas variáveis, e inclusive o nosso array. Em seguida chamamos a função srand para gerar números distintos.
Passo 2
Ainda no main, utilizamos o laço do while, para nos auxiliar no armazenamento e verificação dos números do nosso array. Primeiro, fazemos o armazenamento dos números no array e para isso utilizamos a função rand para gerar números aleatórios de 1 - 20. Depois supomos que em primeiro momento não existem números iguais no nosso array, em seguida fazemos a verificação do número que acabou de ser gerado. Se o número já pertencer ao nosso array, a variável igual receberá o valor 1. Posteriormente, utilizaremos o condicional if para saber se a variável igual é 1 ou 0, caso seja 0, então podemos prosseguir no armazenamento dos demais números. Entretanto, caso seja 1 outro valor deverá ocupar aquela posição. Esse laço do while tem que se repetir até que todas as posições estejam preenchidas com números distintos.

Passo 3
Tudo belezinha até aqui?
Então por fim, exibimos o nosso array ao usuário, e para isso utilizamos o laço for novamente para percorrer todo o array e imprimir seus elementos.

Bons estudos! Estamos sempre aqui para ajudar :)
Resposta
#include
#include
#include
#define SIZE 20
int main(){
int i = 0, j, igual;
int array[SIZE];
srand(time(NULL)); /* Semente do gerador de números aleatórios */
do{
array[i] = 1 + rand() % SIZE; /* gera números aleatórios de 1 - 20, e armazena no array */
igual = 0; /* inicialmente dizemos que não existem números iguais no array */
for(j = 0; j
if(array[j]== array[i]){
igual = 1; /* em caso positivo a variável igual recebe o 1 */
}
}
if(igual == 0){ /* se não há números iguais então pode-se seguir gerando e armazenando outros números */
i++;
}
}while(i
/* exibe o array */
for(int k = 0; k
printf("%d ",array[k]);
}
return 0; /* indica que a execução foi bem-sucedida */
}