Оператор вызова функции printf () имеет следующую структуру:
printf (форматная_строка, список_аргументов);
Форматная строка ограничена двойными кавычками (т.е. является текстовой константой) и может включать в себя произвольный текст, управляющие символы и спецификаторы формата. Список аргументов может отсутствовать или же состоять из выражений, значения которых выводятся на экран (в частном случае из констант и переменных).
В примере 1 оператор printf ("\na="); содержит текст ("а=") и управляющие символы ("\n"). Текст выводится на экран в том виде, в котором он записан. Управляющие символы влияют на расположение на экране выводимых знаков. В результате выполнения этого оператора на экран с новой строки выведутся символы а=.
Признаком управляющего символа является значок \. Ниже приводится их список:
\n – перевод строки;
\t – горизонтальная табуляция;
\r – возврат курсора к началу новой строки;
\а – сигнал-звонок;
\b – возврат на один символ (одну позицию);
\f – перевод (прогон) страницы;
\v - вертикальная табуляция.
Оператор printf (“\nПлощадь треугольника = %f ”, s); содержит все виды параметров функции printf. Список аргументов состоит из одной переменной s. Ее значение выводится на экран. Пара символов %f является спецификацией формата выводимого значения переменной s. Значок % — признак формата, а буква f указывает на то, что выводимое число имеет вещественный (плавающий) тип и выводится на экран в форме с фиксированной точкой. Например, если в результате вычислений переменная s получит значение 32,435621, то на экран выведется:
Площадь треугольника=32.435621
Спецификатор формата определяет форму внешнего представления выводимой величины. Вот некоторые спецификаторы формата:
%с — символ;
%s — строка;
%d — целое десятичное число (тип int);
%u — целое десятичное число без знака (тип unsigned);
%f — вещественные числа в форме с фиксированной точкой;
%е— вещественные числа в форме с плавающей точкой (с мантиссой и порядком).
Например, после выполнения следующих операторов
float m,p;
int k;
m=84.3; k=-12; p=32.15;
printf ("\nm=%f\tk=%d\tp=%e",m,k,p);
на экран выведется строка:
m=84.299999 k=-12 p=3.21500e+01
Здесь дважды используемый управляющий символ табуляции \t отделил друг от друга выводимые значения. Из этого примера видно, что соответствие между спецификаторами формата и элементами списка аргументов устанавливается в порядке их записи слева направо.
К спецификатору формата могут быть добавлены числовые параметры: ширина поля и точность. Ширина — это число позиций, отводимых на экране под величину, а точность — число позиций под дробную часть (после точки). Параметры записываются между значком % и символом формата и отделяются друг от друга точкой. Внесем изменения в оператор вывода для рассмотренного выше примера.
printf (“\nm=%5.2f\tk=%5d\tp=%8.2e\tp=%11.4e”,m,k,p,p);
В результате на экране получим:
m=84.30 k= -12 р = 32.15 р = 3.2150е+01
Если в пределы указанной ширины поля выводимое значение не помещается, то этот параметр игнорируется и величина будет выводиться полностью.
К спецификаторам формата могут быть добавлены модификаторы в следующих вариантах:
%ld — вывод long int;
%hu — вывод short unsigned;
%Lf — вывод long double.
Форматированный ввод с клавиатуры. Оператор вызова функции scanf () имеет следующую структуру:
scanf (форматная_строка, список_аргументов);
Данная функция осуществляет чтение символов, вводимых с клавиатуры, и преобразование их во внутреннее представление в соответствии с типом величин. В функции scanf () форматная строка и список аргументов присутствуют обязательно. В программе из примера 1 имеется оператор:
Scanf(”%f”,&a)
Здесь “%f “ - форматная строка; &а — список аргументов, состоящий из одного элемента. Этот оператор производит ввод числового значения в переменную а.
Символьную последовательность, вводимую с клавиатуры и воспринимаемую функцией scanf (), принято называть входным потоком. Функция scanf () разделяет этот поток на отдельные вводимые