Текст и числа
printf умеет выводить и числа, и даже считать с ними. Буква f в конце названия означает «formatted» — «форматированный». Текст в кавычках — это форматная строка, и в ней могут быть спецификаторы формата: заменители, которые начинаются с %. Спецификатор %d означает «здесь будет целое число». Само число пишут после текста через запятую:
printf("%d\n", 42);Выведется:
42Буква d означает decimal — «десятичный»: число выводится в десятичной системе, как обычно. Числа в коде пишите без пробелов и запятых: 1250, а не 1 250 или 1,250.
Вместо числа после запятой можно написать вычисление. C сначала посчитает его и выведет результат. А текст в кавычках выводится в точности как есть:
printf("%d\n", 5 + 3);
printf("5 + 3\n");Выведется:
8
5 + 3Складывают знаком +, вычитают знаком -, а умножают звёздочкой * (не буквой x). Как и в математике, умножение выполняется раньше сложения, а скобки меняют порядок:
printf("%d\n", 2 + 3 * 4);
printf("%d\n", (2 + 3) * 4);Выведется:
14
20Деление / в C готовит сюрприз, поэтому оно подождёт следующего урока.
В форматной строке вокруг %d может быть текст. Значение выводится на месте %d, а остальной текст остаётся как есть:
printf("Уровней в игре: %d.\n", 12 + 8);Выведется:
Уровней в игре: 20.Пробелы вокруг %d — часть текста, их нужно писать самим: "Уровней в игре:%d.\n" выведет Уровней в игре:20.
Частые ошибки:
- Забытое значение после запятой: для
printf("Уровней в игре: %d.\n");компилятор не запускает программу и сообщает об ошибкеmore '%' conversions than data arguments(спецификаторов%больше, чем значений). - Вычисление, записанное внутри текста:
printf("Уровней в игре: 12 + 8.\n");выведетУровней в игре: 12 + 8.C не считает внутри кавычек. - Пропущенная запятая:
printf("%d\n" 42);заканчивается ошибкойexpected ')'.
Задание
- 1
Второй
printfвыводит текст27 + 2. Измените его так, чтобы C сложил числа и вывел29: в кавычках замените текст на%d\n, а после закрывающей кавычки добавьте запятую и вычисление27 + 2. - 2
Теперь превратите результат в целое предложение. Измените второй
printf, чтобы программа выводила:В поездку едут 27 учеников и 2 учителя. Всего человек: 29.Пусть число 29 по-прежнему считает C с помощью
%d, и не забудьте про пробелы. - 3
Билет в зоопарк стоит 12 евро. Добавьте строку, которая выводит, сколько стоят билеты для всех вместе, чтобы программа выводила:
В поездку едут 27 учеников и 2 учителя. Всего человек: 29. Стоимость билетов: 348 EURПусть C сам посчитает цену как
(27 + 2) * 12. Скобки нужны, чтобы сначала сложились люди и только потом результат умножился на цену.