С вообще говоря, не умеет выделять массивы произвольного размера на стеке (вот так как у вас x локальная переменная). Ему надо знать размер массива во время компиляции. Вот про это он и ругается, n - не константа.
Есть расширение
VLA, которое есть в стандарте C99. С ним вот такие вот массивы можно заводить. Оно включено не во всех компиляторах из коробки. В некоторых его вообще, наверное, нет.
Попробуйте передать компилятору в ключах флаг
-std=c99
.
Или, выделяйте массив через malloc (не забудьте free сделать потом).
Еще, можно завести достаточно большой глобальный массив фиксированного размера.