Назначение и описание функции

Функция позволяет вывести информация на экран: простые сообщения, значения переменных и специальные символы (перевод строки, горизонтальная табуляция и т.д.). Функция определяется в библиотеке <stdio.h>. Синтаксис функции:

printf(<управляющая строка>, <список переменных>);

где <управляющая строка> - строка, которая может содержать:

а) простые сообщения, выводимые на экран без изменения, эти сообщения могут содержать произвольные символы, в том числе и на русском языке;

б) спецификации формата вывода переменных;

в) специальные символы;

<список переменных> - перечень идентификаторов переменных, значения которых необходимо вывести на экран.

       Спецификации формата начинаются с символа %, за которым следует код формата. Перечень основных спецификаций приведен в табл. 3.1.

Таблица 3.1.

Формат спецификации Назначение
  ЦЕЛЫЕ ЧИСЛА
%d целое десятичное число
%x целое шестнадцатеричное число
%o целое восьмеричное число
%u целое беззнаковое десятичное число
%ld число типа длинное целое
  ВЕЩЕСТВЕННЫЕ ЧИСЛА
%f вещественное число в формате xx.xxxxxx
%e вещественное число в научном формате xx.xxxxx e+xx
%g вещественное число в форматах %f или %e (в какой форме запись будет короче)
%lf вещественное число двойной точности
  ПРОЧЕЕ
%c символ
%s строка
%p указатель

Специальные символы, приведенные в табл. 2.3, можно использовать для создания новой строки, горизонтальной табуляции подачи звукового сигнала и т.д.

       Замечание: При использовании функции printf() необходимо быть очень внимательным к соответствию спецификаций форматов в управляющей строке и типов переменных в списке. В противном случае выводимые значения будут существенно отличаться от реальных. Кроме этого, требуется проверять количество вводимых спецификаций и количество переменных в списке – они должны быть равны друг другу.

Примеры:

1) Необходимо вывести на экран сообщение «Значения переменных равны:» и далее текущие значения двух целых переменных a и b, вещественной переменной c. После вывода значения переменных a и b необходимо перевести курсор на новую строку. Эта задача выполняется следующим вызовом функции:

printf(“Значения переменных равны: %d %d\n%f”,a,b,c);

       2) Значения двух вещественных переменных x и y, а также символьной переменной symb необходимо вывести на экран в следующем виде (символы … означают, что здесь будет выведено текущее значение переменной):

x=…

y=…

symb=…

т.е. после вывода каждой переменной необходимо выполнить перевод строки. После вывода значений переменных необходимо выдать звуковой сигнал. Эта задача выполняется следующей строкой программы:

printf(“ x=%f\n y=%f\n symb=%c\n\a”,x,y,symb);

Точность и ширина поля вывода

В функции printf() существует возможность задания вывода переменных определенного формата, а именно, можно задавать ширину поля переменных, определять точность вывода вещественных переменных, определять тип выравнивания данных и т.д. В этом случае спецификации формата записывается в такой форме:

%[флаг][ширина].[точность]спецификация

где флаг – тип выравнивания (пусто – выравнивания по правому краю, `–` – выравнивания по левому краю, `+` – всегда печатать знак числа);

ширина – общая длина поля вывода, т.е. общее количество символов при выводе, включая знак и десятичную точку;

точность – количество цифр числа после запятой.

Примеры спецификаций формата:

%12.4f – вывод вещественной переменной с выравниванием по правому краю, общее количество символов при выводе –12 позиций, количество знаков после десятичной точки – 4;

%-+10.0f – вывод вещественной переменной с выравниванием по левому краю и обязательным выводом знака числа, общая длина поля вывода – 10 позиций, знаки после десятичной точки не выводятся;

%08d – вывод целой переменной с выравниванием по правому краю, ширина поля – 8 позиций, слева число дополняется нулями;

%16s – вывод строки, ширина поля вывода – 16 позиций.

Функция форматированного ввода scanf()

Назначение и описание функции

Функция позволяет ввести информация с клавиатуры. Функция определяется в библиотеке <stdio.h>. Синтаксис:

scanf(<управляющая строка>, <список адресов переменных>);

где <управляющая строка> - строка, которая может содержать только спецификации формата, перечень допустимых значений спецификаций тот же самый, что и для функции printf() (см. табл. 3.1.);

<список адресов переменных> – содержит перечисленные через запятую адреса переменных, вводимых функцией. Адрес переменной указывается символом & и далее идет идентификатор переменной, например, адрес переменной flag обозначается символами &flag. Для массивов и строк указывать символ & не обязательно.

Замечание: При использовании функции scanf() в управляющей строке нежелательно использовать никаких лишних символов (даже пробелов), кроме спецификаций. Нельзя использовать и специальные символы.

Примеры:

1) Ввести с клавиатуры переменные population и age типов длинное целое и вещественное число:

scanf(“%ld%f”, &population, &age);

 2) Ввести с клавиатуры целую переменную kod в шестнадцатеричном формате, строку name и вещественную переменную двойной точности precision:

scanf(“%x%s%lf”, &kod, name, &precision);

       При вводе нескольких переменных разделителями между ними являются клавиши пробела, табуляции и ENTER.

Пример 3.1

Рассмотрим программу, в которой вычисляется значение функции y=sin(x) для двух введенных с клавиатуры значений аргумента. При этом вывод на экран необходимо выполнить в виде следующей таблицы (ширина поля каждой переменной 8 позиций, точность – 4 знака):             

x y
 xx.xxxx  xx.xxxx
 xx.xxxx  xx.xxxx

       Листинг 3.1

/* Программа вычисления функции y=sin(x) */                

#include <stdio.h>

#include <math.h>

void main()

{

float x1,x2,y1,y2;

 

printf(“введите два значения аргумента:\n”);

scanf(“%f%f”,&x1,&x2);

printf(“\n| x |  y |”);

printf(“\n|––––––––|––––––––|\n”);

y1=sin(x1);

y2=sin(x2);

printf(“|%8.4f|%8.4f|\n”,x1,y1);

printf(“|%8.4f|%8.4f|\n”,x2,y2);

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: