Ваш printf (из комментария) не имеет правильного количества аргументов и поэтому печатает значение мусора:
printf("\n%d! = %d\n",result);
Вопреки тому, что сказали другие, массив не нужно инициализировать явно, как говорит стандарт C:
Если объект, имеющий автоматическую продолжительность хранения, не инициализируется явно, его значение является неопределенным. Если объект со статической продолжительностью хранения не инициализирован явно, то:
- если он имеет тип указателя, он инициализируется нулевым указателем
- если он имеет арифметический тип, он инициализируется (положительным или беззнаковым) нулем
- если это агрегат, каждый элемент инициализируется (рекурсивно) в соответствии с этими правилами
- если это объединение, первый именованный элемент инициализируется (рекурсивно) в соответствии с этими правилами.
Тем не менее, это хорошая практика для явной инициализации, чтобы прояснить ваши намерения.