Учебная версия на русском. Код и его вывод сохранены в исходном виде.
Функции в C
Организуйте программу с помощью прототипов, параметров, возвращаемых значений и рекурсии.

Функция выделяет отдельную операцию. Объявление сообщает тип результата и параметры, а определение содержит тело. Объявляйте функцию до использования; общие объявления помещайте в заголовок.
C передаёт аргументы по значению. Чтобы изменить данные вызывающего кода, получите действительный указатель и запишите значение в указанный объект. Параметр-массив преобразуется в указатель, поэтому длину нужно передать отдельно.
Рекурсивной функции нужен базовый случай, к которому приближается каждый вызов. Вызовы могут занимать стек; для больших входных данных итеративное решение иногда предпочтительнее.
Проверяйте возвращаемые значения и разделяйте ввод, вычисления и вывод. Перед включением функции в большой проект испытайте обычные, граничные и недопустимые входные данные.
Частые вопросы
Почему код и вывод остаются на английском?
Ключевые слова, идентификаторы и строки, проверяемые тестами, сохранены, чтобы не менять программу. Объяснения и элементы управления переведены.