Загрузка данных
#include <stdio.h> // библиотека ввода/вывода (printf, scanf)
#include <stdlib.h> // стандартные функции (system и др.)
#include <locale.h> // setlocale — настройка локали для русских букв
#include <windows.h> // SetConsoleCP/SetConsoleOutputCP — кодировка консоли
// ============================================================
// ФУНКЦИЯ 1: Счётчик от 9 до 0 через цикл while
// ============================================================
void countdown() { // объявляем функцию, void — ничего не возвращает
int counter = 9; // создаём переменную counter = 9
printf("\nСчётчик от 9 до 0:\n"); // печатаем заголовок, \n — новая строка
while (counter >= 0) { // пока counter >= 0 — повторяем тело цикла
printf("%d\n", counter); // печатаем значение counter (%d — целое число)
counter--; // уменьшаем counter на 1 (то же, что counter = counter - 1)
} // конец цикла while
} // конец функции countdown
// ============================================================
// ФУНКЦИЯ 2: Таблица умножения Пифагора 9×9
// ============================================================
void multiplicationTable() { // объявляем функцию
printf("\nТаблица умножения Пифагора:\n"); // печатаем заголовок
printf(" "); // 4 пробела — отступ под шапку таблицы
for (int i = 1; i <= 9; i++) { // цикл i от 1 до 9 (шапка — верхние числа)
printf("%4d", i); // печатаем i, занимая 4 позиции
} // конец цикла шапки
printf("\n"); // переход на новую строку после шапки
for (int i = 1; i <= 9; i++) { // ВНЕШНИЙ цикл — строки таблицы (i = номер строки)
printf("%3d ", i); // печатаем номер строки слева (3 символа + пробел)
for (int j = 1; j <= 9; j++) { // ВНУТРЕННИЙ цикл — столбцы (j = номер столбца)
printf("%4d", i * j); // печатаем произведение i*j (4 позиции)
} // конец внутреннего цикла
printf("\n"); // конец строки — переход на новую
} // конец внешнего цикла
} // конец функции multiplicationTable
// ============================================================
// ФУНКЦИЯ 3: Ввод чисел, вывод исходных, сортировка, вывод отсортированных
// ============================================================
void sortNumbers() { // объявляем функцию
int numbers[10]; // массив из 10 целых чисел (ячейки 0..9)
int count = 0; // счётчик — сколько чисел введёт пользователь
printf("\nВведите количество чисел (не более 10): "); // приглашение ко вводу
scanf("%d", &count); // читаем число в count (& — адрес переменной)
if (count > 10) count = 10; // защита: если ввели >10 — обрезаем до 10
if (count < 1) count = 1; // защита: если ввели <1 — ставим 1
printf("Введите %d чисел:\n", count); // сообщаем, сколько чисел вводить
for (int i = 0; i < count; i++) { // цикл по ячейкам массива от 0 до count-1
printf("Число %d: ", i + 1); // печатаем «Число 1:», «Число 2:»... (i+1, т.к. i с нуля)
scanf("%d", &numbers[i]); // читаем число в ячейку numbers[i]
} // конец цикла ввода
printf("\nИсходная последовательность: "); // подпись перед выводом исходных чисел
for (int i = 0; i < count; i++) { // цикл по всем введённым числам
printf("%d ", numbers[i]); // печатаем число и пробел
} // конец цикла вывода
printf("\n"); // переход на новую строку
// ---------- СОРТИРОВКА МЕТОДОМ ПУЗЫРЬКА ----------
for (int i = 0; i < count - 1; i++) { // внешний цикл: сколько проходов (count-1)
for (int j = 0; j < count - i - 1; j++) { // внутренний цикл: сравнение соседних пар
if (numbers[j] > numbers[j + 1]) { // если левый больше правого — надо менять
int temp = numbers[j]; // сохраняем левое значение во временную переменную
numbers[j] = numbers[j + 1]; // копируем правое в левую ячейку
numbers[j + 1] = temp; // записываем сохранённое значение в правую ячейку
} // конец if
} // конец внутреннего цикла
} // конец внешнего цикла
printf("Отсортированная последовательность: "); // подпись перед выводом отсортированных
for (int i = 0; i < count; i++) { // цикл по всем элементам массива
printf("%d ", numbers[i]); // печатаем число и пробел
} // конец цикла вывода
printf("\n"); // переход на новую строку
} // конец функции sortNumbers
// ============================================================
// ФУНКЦИЯ 4: Вывод меню команд
// ============================================================
void showMenu() { // объявляем функцию
printf("\n=== МЕНЮ КОМАНД ===\n"); // заголовок меню
printf("1 - Вывести счётчик от 9 до 0\n"); // пункт 1
printf("2 - Вывести таблицу умножения Пифагора\n"); // пункт 2
printf("3 - Ввести числа и отсортировать их\n"); // пункт 3
printf("0 - Выход из программы\n"); // пункт 0 — выход
printf("===================\n"); // нижняя рамка
} // конец функции showMenu
// ============================================================
// ГЛАВНАЯ ФУНКЦИЯ — точка входа в программу
// ============================================================
int main() { // main возвращает int (код завершения)
SetConsoleCP(1251); // кодировка ВВОДА консоли — Windows-1251 (для русских букв)
SetConsoleOutputCP(1251); // кодировка ВЫВОДА консоли — Windows-1251
setlocale(LC_ALL, "Russian"); // настройка локали на русский язык
int command; // переменная для хранения введённой команды
showMenu(); // показываем меню один раз при запуске
while (1) { // БЕСКОНЕЧНЫЙ цикл (1 = истина) — пока не выйдем через return
printf("\nВведите команду: "); // приглашение ко вводу команды
scanf("%d", &command); // читаем команду в переменную command
switch (command) { // переключатель по значению command
case 1: // если command == 1
countdown(); // вызываем функцию счётчика
break; // выходим из switch (без break «провалимся» в case 2)
case 2: // если command == 2
multiplicationTable(); // вызываем таблицу умножения
break; // выходим из switch
case 3: // если command == 3
sortNumbers(); // вызываем ввод и сортировку чисел
break; // выходим из switch
case 0: // если command == 0
printf("\nПрограмма завершена.\n"); // прощаемся
return 0; // выход из main → программа заканчивается
default: // если ни один case не совпал
printf("\nНеверная команда! Пожалуйста, введите одну из команд: 1, 2, 3 или 0.\n");
showMenu(); // снова показываем меню, чтобы напомнить
break; // выходим из switch
} // конец switch
} // конец while
return 0; // (недостижимо из-за while(1), но формально нужен)
} // конец main