В C существуют динамические массивы, размер которых вычисляется во время выполнения программы (и больше не меняется). Определяются они аналогично обычным массивам, только в качестве размера используется не константа, а переменная.
#include <stdio.h>
#include <stdlib.h>
int main() {
size_t n;
scanf("%zu", &n);
int array[n];
for(size_t i = 0; i < n; ++i)
array[i] = rand();
printf("{");
for(size_t i = 0; i < n; ++i) {
printf("%i", array[i]);
if(i < n - 1)
printf(", ");
else
printf("}\n");
}
return 0;
}