良いとか綺麗は知らないが、こういう方法もある

/* 1〜9までの数字 */
int numbers[] = { 1,2,3,4,5,6,7,8,9 };
/* をランダムに並び替えて */
int i, j, t;
for(i=0;i<9;i++) {
j = rand() % 9; t = numbers[j]; numbers[j] = numbers[i]; numbers[i] = t;
}
/* 5つ表示 */
printf("%d %d %d %d %d\n", numbers[0], numbers[1], numbers[2], numbers[3], numbers[4]);