- Структура определения:
тип_возвращаемого_значения имя_функции(тип_параметра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));).
〰〰〰 𓆝 𓆟 𓆞 𓆝 𓆟 𓆝 𓆟 𓆞 〰〰〰