• Структура определения:
    тип_возвращаемого_значения имя_функции(тип_параметра1 имя_параметра1, ...) {
        // Тело функции: последовательно исполняемый код
        инструкция1;
        инструкция2;
        // ...
        return значение; // Если тип возврата не void
    }
    • Внутри () находятся параметры, передаваемые в функцию. Если параметров нет, указывается void.
    • Внутри {} находится тело функции.
  • main()
    • Главная функция, точка входа в программу. Обязательна.
    • Стандартная сигнатура: int main(void) или int main(int argc, char *argv[]).
    • Всегда должна возвращать int. return 0; означает успешное завершение программы.
  • sizeof()
    • Оператор (похож на функцию), возвращает размер в байтах, отводимый под тип данных или переменную.
    • Пример: sizeof(int), sizeof(my_variable).
  • getchar() (#include <stdio.h>)
    • Читает и возвращает один символ, введенный со стандартного ввода (stdin), как значение типа int (код символа или EOF в конце файла/при ошибке).
  • putchar() (#include <stdio.h>)
    • Выводит один символ (переданный как int) на стандартный вывод (stdout) и возвращает выведенный символ как int.
  • printf() (#include <stdio.h>)
    • Функция форматированного вывода на stdout. Выводит текст и значения переменных в соответствии с форматной строкой. Не добавляет перенос строки автоматически (\n нужно указывать явно).
    • Возвращает количество реально выведенных символов (или отрицательное значение при ошибке).
    • Спецификаторы формата (основные):
      • %d, %i: Целое знаковое десятичное (int).
      • %u: Целое беззнаковое десятичное (unsigned int).
      • %o: Целое беззнаковое восьмеричное.
      • %x, %X: Целое беззнаковое шестнадцатеричное (строчные/прописные буквы).
      • %f: Вещественное число с плавающей точкой (float, double). Стандартное представление.
      • %e, %E: Вещественное число в экспоненциальной (научной) нотации.
      • %g, %G: Вещественное число (%f или %e в зависимости от значения).
      • %c: Один символ (char).
      • %s: Строка (массив char, заканчивающийся \0).
      • %p: Адрес указателя.
      • %%: Символ процента (%).
    • Флаги и модификаторы (между % и спецификатором):
      • число (ширина): Минимальная ширина поля вывода. Пример: %10d.
      • -: Выравнивание по левому краю в пределах поля. Пример: %-10d.
      • +: Всегда выводить знак (+ или -) для числовых типов. Пример: %+d.
      • (пробел): Выводить пробел для положительных чисел, - для отрицательных. Пример: % d.
      • 0: Заполнять свободное место в поле нулями (слева). Пример: %010d.
      • #: Альтернативная форма вывода (например, 0x для %x, 0 для %o). Пример: %#x.
      • .число (точность):
        • Для int: Минимальное количество выводимых цифр (дополняется нулями слева). Пример: %.5d.
        • Для float/double: Количество знаков после десятичной точки. Пример: %.2f.
        • Для %s: Максимальное количество выводимых символов строки. Пример: %.10s.
    • Модификаторы длины (перед спецификатором):
      • h: Для short int (%hd) или unsigned short int (%hu).
      • hh: Для signed char (%hhd) или unsigned char (%hhu, %hhx).
      • l: Для long int (%ld), unsigned long int (%lu), double (%lf - часто используется, хотя для printf %f достаточно для double).
      • ll: Для long long int (%lld), unsigned long long int (%llu).
      • L: Для long double (%Lf, %Le).
      • Пример: long long x = 1234567890987LL; printf("%lld\n", x);
  • scanf() (#include <stdio.h>)
    • Функция форматированного ввода со stdin. Читает данные в соответствии с форматной строкой и сохраняет их по адресам переданных переменных.
    • Возвращает количество успешно прочитанных и присвоенных элементов (или EOF при ошибке/конце файла до чтения).
    • Важно: Передавать адреса переменных с помощью оператора & (например, scanf("%d", &my_int);). Для строк (массивов char) & не нужен, так как имя массива само является адресом.
    • Спецификаторы формата (основные):
      • %d: Целое знаковое десятичное (int *).
      • %i: Целое число в любом формате (десятичный, 0x-шестнадцатеричный, 0-восьмеричный) (int *).
      • %u: Целое беззнаковое десятичное (unsigned int *).
      • %o: Целое восьмеричное (int * или unsigned int *).
      • %x, %X: Целое шестнадцатеричное (int * или unsigned int *).
      • %f, %e, %g, %E, %G: Вещественное число (float *).
      • %lf, %le, %lg: Вещественное число (double *). Важно: %lf для double!
      • %Lf, %Le, %Lg: Вещественное число (long double *).
      • %c: Один символ (char *). Читает любой символ, включая пробельные.
      • %s: Строка символов до первого пробельного символа (char *, массив должен быть достаточно большим!).
    • Модификаторы длины (перед спецификатором): Аналогичны printf (h, hh, l, ll, L). Пример: scanf("%hd", &my_short);, scanf("%lf", &my_double);
    • Другие модификаторы:
      • число (ширина): Максимальное количество символов для чтения для данного поля. Пример: scanf("%5s", str); (прочитает не более 5 символов).
      • * (подавление присваивания): Прочитать данные в соответствии со спецификатором, но не сохранять их. Пример: scanf("%d %*c %d", &a, &b); (прочитает число, пропустит символ, прочитает второе число).
  • pow(base, exponent) (#include <math.h>)
    • Возводит base в степень exponent. Оба аргумента и результат типа double.
  • rand() (#include <stdlib.h>)
    • Генерирует псевдослучайное целое число в диапазоне [0, RAND_MAX] (RAND_MAX - константа, обычно 32767).
    • Без инициализации (srand) будет генерировать одну и ту же последовательность при каждом запуске.
    • Генерация в диапазоне [min, max]: min + rand() % (max - min + 1)
    • Генерация double в [0.0, 1.0): (double)rand() / (RAND_MAX + 1.0)
  • srand(unsigned int seed) (#include <stdlib.h>)
    • Инициализирует (“засеивает”) генератор псевдослучайных чисел значением seed.
  • time(time_t *timer) (#include <time.h>)
    • Возвращает текущее календарное время как количество секунд, прошедших с начала эпохи (обычно 01.01.1970 UTC).
    • Часто используется для инициализации srand для получения разных последовательностей rand() при каждом запуске: srand(time(NULL)); (или srand((unsigned int)time(NULL));).

〰〰〰 𓆝 𓆟 𓆞 𓆝 𓆟 𓆝 𓆟 𓆞 〰〰〰