- •1. Краткие теоретические сведения
- •1.4. Пустой оператор
- •1.5. Составной оператор (блок)
- •1.6. Операторы начала и конца программы
- •Int main()
- •1.7. Оператор return
- •1.8. Оператор присваивания
- •1.8.1. Множественное присваивание
- •1.8.2. Ошибки при присваивании
- •1.8.3. Не путайте операторы равенства и присвоения
- •1.8.4. Составные операторы присвоения
- •1.8.6. Присваивание значения при объявлении
- •1.9. Операторы ввода-вывода
- •1.10. Функции ввода и вывода
- •1.10.1. Функция printf
- •1.10.2. Функция scanf
- •1.11. Операторы потокового ввода и вывода
- •1.11.1. Использование cout для отображения вывода на экран
- •1.11.2. Использование cout для вывода чисел
- •1.11.3. Вывод нескольких значений одновременно
- •1.11.4. Использование специальных символов вывода
- •1.11.5. Другие специальные символы
- •1.11.5. Вывод восьмеричных и шестнадцатеричных значений
- •1.11.6. Вывод на стандартное устройство ошибок
- •1.11.7. Управление шириной вывода
- •1.11.8. Директива #define
- •1.11.9. Оператор потокового вывода cin
- •1.11.10. Второе знакомство с cin
- •1.11.11. Следите за ошибками переполнения
- •1.11.12. Следите за ошибками несовпадения типов
- •1.11.13. Чтение символьных данных
- •1.11.14. Чтение слов с клавиатуры
- •1.11.15. Чтение строковых данных
- •1.12. Комментарии. Использование пробелов
- •1.13. Линейный вычислительный процесс
- •1.16. Таблица выбора идентификаторов
- •2. Задание
- •2.10. Задания
- •2.10.1. Задание 1
- •2.10.2. Задание 2
- •2.10.3. Задание 3 (домашнее)
- •3. Выводы
- •4. Требование к отчету
- •5. Вопросы для самоконтроля
- •Литература
- •Оглавление
1.10. Функции ввода и вывода
Функции ввода и вывода уже были достаточно подробно рассмотрены в лабораторной работе 2, поэтому в данной работе кратко рассмотрим только две функции printf() и scanf().
1.10.1. Функция printf
Функция printf предназначена для вывода форматированной последовательности данных. Может иметь один или несколько параметров, первым из которых является строка, называемая форматной строкой. За форматной строкой следует список вывода, который может содержать переменные, константы, выражения разных типов. Форматная строка задает способ преобразования и представления на печати элементов списка вывода, а также определяет, сколько элементов содержит список вывода и какого они типа.
Формат функции вывода:
printf("строка_формата", список_переменных);
Например, printf("Получены значения %d %s\n",g,p). Здесь "Получены значения %d %s\n" - форматная строка, g,p - список вывода. Или printf("Вы ввели число").Здесь нет списка вывода.
Формат функции ввода:
scanf("строка_формата", &список_переменных);
Например,
printf (”Значение числа Пи равно %f\n”, pi);
Форматная строка может содержать символы, которые будут выведены в том виде, в каком они есть (например: Получены значения), спецификации преобразования, которые начинаются со знака % (например: %d, %s), последовательности переключения кода (escape sequences) (например: \n, что означает перевод курсора на следующую строку).
Спецификация преобразования имеет следующий вид:
%[флаг][ширина][. точность][размер]тип
Каждая спецификация заставляет функцию printf, имеющую список вывода, искать следующий элемент списка вывода, который затем преобразуется и выводится в соответствии с заданным преобразованием. Поэтому число элементов списка вывода должно соответствовать числу спецификаций форматной строки в вызове printf. Если printf содержит в качестве аргумента только форматную строку, то просто выводит эту строку.
Примечание. Те символы, которые должны быть выведены без преобразования (в том виде, в котором они записаны в форматной строке) до выводимого значения, записываются в форматной строке до спецификации формата, а те, которые должны быть выведены после значения, должны быть записаны после соответствующей спецификации преобразования.
В табл.5.2 приведены спецификации преобразования.
Таблица 5.2
Спецификации преобразования для функции printf
Элемент спецификации |
Значение |
флаг (необязательный элемент) |
|
- |
Прижать число при выводе к левому краю выделенного поля |
0 |
Заполнить лишнее пространство нулями вместо пробелов |
+ |
Всегда выводить знак числа (+ или -) |
пробел |
Пробел на месте знака, если значение положительно |
# |
Выводить 0 перед восьмеричным или 0x перед шестнадцатеричным значением |
ширина (необязательный элемент) |
|
n |
Минимальная ширина поля в n символов |
точность (необязательный элемент) |
|
.n |
Не более n знаков после точки для числа в форме e, E, f |
размер (необязательный элемент) |
|
h |
Короткое целое (short int) |
l |
Длинное целое (long int) |
тип (тип преобразования) |
|
d |
Десятичное целое число со знаком |
i |
То же, что и d |
o |
Восьмеричное целое число без знака |
u |
Десятичное целое число без знака |
x |
Шестнадцатеричное целое число без знака, цифры в нижнем регистре |
X |
То же, что х, но цифры в верхнем регистре |
f |
Число со знаком в форме [-]dddd.dddd (число с плавающей точкой) |
e |
Число со знаком в форме [-]d.dddde[+/-]ddd (число с плавающей точкой в экспоненциальной форме) |
g |
Число со знаком в форме e или f |
E |
Число со знаком в форме [-]d.ddddE[+/-]ddd (число с плавающей точкой в экспоненциальной форме) |
G |
Число со знаком в форме E или F |
c |
Один символ |
s |
Строка |
Форматная строка может содержать:
символы печатаемые текстуально;
спецификации преобразования;
управляющие символы.
В форматную строку также могут входить управляющие символы:
\n – управляющий символ новая строка;
\t – табуляция;
\a – звуковой сигнал и др.
Также в форматной строке могут использоваться модификаторы формата, которые управляют шириной поля, отводимого для размещения выводимого значения. Спецификатор формата – запись, которая начинается со знака % и которая определяет форму внешнего представления выводимой величины. Модификаторы – это числа, которые указывают минимальное количество позиций для вывода значения и количество позиций ля вывода дробной части числа:
%[-]m[.p]C, где
– – задает выравнивание по левому краю,
m – минимальная ширина поля,
p – количество цифр после запятой для чисел с плавающей точкой и минимальное количество выводимых цифр для целых чисел (если цифр в числе меньше, чем значение р, то выводятся начальные нули),
С – спецификация формата вывода.
Запомните:
Спецификатор должен соответствовать типу выводимой переменной.
С помощью функции printf() можно выводить сразу несколько переменных. Для этого используется следующая конструкция:
int num_i;
float num_f;
num_i = 5;
num_f = 10.5;
printf("num_i = %d, num_f = %f", num_i, num_f);
Результат выполнения программы будет выглядеть так:
num_i = 5, num_f = 10.5
Кроме спецификаторов в функции printf() используются управляющие символы, такие как перевод строки \n, табуляции \t и др. Например, если в ранее рассмотренном примере необходимо вывести значения переменных не в строчку, а в столбик, то необходимо переписать функцию printf() следующим образом:
printf("num_i = %d,\n num_f = %f", num_i, num_f);
Аналогично используется и символ табуляции.