Где может быть полезен форматный вывод

Где может быть полезен форматный вывод thumbnail

Форматный вывод числовых результатов на стандартное устройство вывода (stdout), которым по умолчанию является экран дисплея, осуществляется с помощью функции printf.

Общий вид записи оператора

printf(«список форматов»,cпиcoк имен переменных и выражений);

Например:

printf («Результат: %d + %d = %d n», a, b, c );

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

%dвывод целого числа

%fвывод вещественного числа

%eвывод вещественного числа в экспоненциальной форме

вывод одного символа

%sвывод символьной строки

nпереход в начало новой строки экрана

все остальные символы (кроме некоторых других специальных команд) просто выводятся на экран.

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

printf ( «Результат: %d + %d = %d n», a, 5, a+5 );

Так же, как и для функции scanf, надо следить за совпадением типов форматов и типов переменных, а также количество форматов вывода должно быть равно количеству переменных в списке.

Пример1:

#include «stdafx.h»

int main(){ int i; float f; double d;………. printf(«%d %f %lf», i+1, f, f*d);……….}

Пример 2:

Операторы

printf(«Выходные данные:n»);

printf(«K=%d y=%f», 8+5, 7.0/10);

выводят на экран результаты в следующем виде:

Выходные данные:

К=13 у=0.700000

Управление выводом данных

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

Если программиста не устраивает стандартная форма вывода, он может использовать специальный форматированный вывод, в котором предусмотрены следующие параметры:

1. Ширина поля, определяющая число позиций на экране, отводимых для вывода всего числа, включая целую, дробную час­ти, знак и десятичную точку.

2. Точность представления вещественного числа, опреде­ляющая число позиций в дробной части.

Вещественное число с указанием форматов всегда выводится в десятичной форме. Для целого числа используется только фор­мат ширины поля.

В операторах вывода параметры форматов записываются после знака % и отделяются друг от друга точкой. На­пример, при записи оператора

printf(«K=%3d у=%5.2f»,8+3,7.0/10);

результаты отображаются на экране в следующем виде:

К= 11 у = 0.70

В приведенном примере в форматах %3d и %5.2f параметры 3 и 5 задают ширину поля, 2 — точность выводимого числа, т.е. значение выражения 7./10 будет выведено на экран с двумя значащими цифрами после запятой.

Источник

Как это сделано, например в С

Я думаю, все хорошо знают, как это сделано в С

Стандартный пример из Керниган, Ричи. Язык C

7.3. Форматный вывод — функция PRINTF

Две функции: PRINTF для вывода и SCANF для ввода (следующий раздел) позволяют преобразовывать численные величины в символьное представлEние и обратно. Они также позволяют генерировать и интерпретировать форматные строки. Мы уже всюду в предыдущих главах неформально использовали функцию PRINTF; здесь приводится более полное и точное описание. Функция PRINTF(CONTROL, ARG1, ARG2, …) преобразует, определяет формат и печатает свои аргументы в стандартный вывод под управлением строки CONTROL. Управляющая строка содержит два типа объектов: обычные символы, которые просто копируются в выходной поток, и спецификации преобразований, каждая из которых вызывает преобразование и печать очередного аргумента PRINTF.
Каждая спецификация преобразования начинается с символа % и заканчивается символом преобразования. Между % и символом преобразования могут находиться:
— знак минус, который указывает о выравнивании преобразован-
ного аргумента по левому краю его поля.
— Строка цифр, задающая минимальную ширину поля. Преобразо-
ванное число будет напечатано в поле по крайней мере этой
ширины, а если необходимо, то и в более широком. Если пре-
образованный аргумент имеет меньше символов, чем указанная
ширина поля, то он будет дополнен слева (или справа, если
было указано выравнивание по левому краю)заполняющими сим-
волами до этой ширины. Заполняющим символом обычно являет-
ся пробел, а если ширина поля указывается с лидирующим ну-
лем, то этим символом будет нуль (лидирующий нуль в данном
случае не означает восьмеричной ширины поля).
— Точка, которая отделяет ширину поля от следующей строки
цифр.
— Строка цифр (точность), которая указывает максимальное
число символов строки, которые должны быть напечатаны, или
число печатаемых справа от десятичной точки цифр для пере-
менных типа FLOAT или DOUBLE.
— Модификатор длины L, который указывает, что соответствую-
щий элемент данных имеет тип LONG, а не INT.
Ниже приводятся символы преобразования и их смысл:

Читайте также:  Когда может быть полезна супружеская измена

D — аргумент преобразуется к десятичному виду.
O — Аргумент преобразуется в беззнаковую восьмеричную форму
(без лидирующего нуля).
X — Аргумент преобразуется в беззнаковую шестнадцатеричную
форму (без лидирующих 0X).
U — Аргумент преобразуется в беззнаковую десятичную форму.
C — Аргумент рассматривается как отдельный символ.
S — Аргумент является строкой: символы строки печатаются до
тех пор, пока не будет достигнут нулевой символ или не бу-
дет напечатано количество символов, указанное в специфика-
ции точности.
E — Аргумент, рассматриваемый как переменная типа FLOAT или
DOUBLE, преобразуется в десятичную форму в виде
[-]M.NNNNNNE[+-]XX, где длина строки из N определяется
указанной точностью. Точность по умолчанию равна 6.
F — Аргумент, рассматриваемый как переменная типа FLOAT или
DOUBLE, преобразуется в десятичную форму в виде
[-]MMM.NNNNN, где длина строки из N определяется указанной
точностью. Точность по умолчанию равна 6. отметим, что эта
точность не определяет количество печатаемых в формате F
значащих цифр.
G — Используется или формат %E или %F, какой короче; незначащие нули не печатаются.

Если идущий за % символ не является символом преобразования, то печатается сам этот символ; следовательно, символ % можно напечатать, указав %%. Большинство из форматных преобразований очевидно и было
проиллюстрировано в предыдущих главах. Единственным исключением является то, как точность взаимодействует со строками. Следующая таблица демонстрирует влияние задания различных спецификаций на печать «HELLO, WORLD» (12 символов). Мы поместили двоеточия вокруг каждого поля для того, чтобы вы могли видеть его протяженность.

:%10S: :HELLO, WORLD:
:%10-S: :HELLO, WORLD:
:%20S: : HELLO, WORLD:
:%-20S: :HELLO, WORLD :
:%20.10S: : HELLO, WOR:
:%-20.10S: :HELLO, WOR :
:%.10S: :HELLO, WOR:

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

прошу прощения за длинную цитату.

Источник

Где может быть полезен форматный вывод

Читайте также:  Какие продукты самые полезные при сахарном диабете

Главная
Случайная страница

Полезное:

Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать неотразимый комплимент
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?

Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника

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

#include <stdio.h> int main(){ int i; float f; double d;………. printf(«%d %f %lf», i+1, f, f*d);

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

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

%[флажки][ширина][.точность][{l|h|L}]{d|i|u|o|x|X|f|e|E|g|G}

Поле ширина определяет количество знакомест на экране, где будет размещено выводимое значение. Как правило, его задают с некоторым запасом, чтобы смежные значения не сливались друг с другом. Выводимое число прижимается младшим разрядом к правой границе указанного поля. Это обеспечивает общепринятый способ вывода числовых таблиц, когда в столбцах одноименные разряды чисел располагаются друг под другом. Если заданная ширина меньше, чем это требуется для выводимого значения, то оно все равно будет выведено полностью, но стройность колонок в таблицах при этом будет нарушена.

Поле флажков может содержать до четырех управляющих символов из набора [–,+,пробел,0,#]. Символ «минус» устанавливает прижим выводимого значения к левой границе выделенного поля (по умолчанию действует правый прижим). Символ «плюс» устанавливает обязательный режим вывода знака числа (даже если оно положительно). Символ «пробел» устанавливает такой режим, при котором вместо знака «+» выводится пробел. Символ «нуль» устанавливает режим вывода чисел, при котором старшие незначащие позиции поля вывода заполняются нулями.

Символ # влияет на формат вывода восьмеричных, шестнадцатеричных и вещественных чисел. При его использовании перед восьмеричными числами выводится лидирующий нуль, перед шестнадцатеричными числами — префикс 0x или 0X. Для форматов f, e, и E обязательно отображается десятичная точка после целой части (по умолчанию, числа, у которых дробная часть равна 0, выводятся без десятичной точки). Для форматов g и G не удаляются лидирующие нули и всегда выводится десятичная точка.

В табл. 4 и 5, заимствованных из файла помощи, показаны способы вывода целочисленного значения I=555 и вещественного значения R=5.5 при различных комбинациях флажков.

Необязательное поле точность задает для целочисленных значений обязательное количество цифр (если число меньше, то перед его старшим разрядом добавляется необходимое количество нулей). Например, вывод целочисленного значения -5 по формату %8.4d выделяет в строке вывода поле из восьми символов, на котором первые три позиции заполнены пробелами, а следующие пять символами -0005.

Для данных вещественного типа поле точность определяет количество цифр в дробной части числа. Не забывайте о количестве значащих цифр, хранение которых обеспечивает тот или иной тип данных. Например, если переменной типа float присвоить значение 3.14159265, то на выводе по формату %10.8f мы увидим результат 3.14159274. Двум последним цифрам результата доверять нельзя, т.к. формат float обеспечивает хранение 7-8 десятичных цифр.

Таблица 4.
Флажки Формат %6d Формат %6o Формат %8x
%-+#0 +555 0x22b
%-+# +555 0x22b
%-+0 +555 22b
%-+ +555 22b
%-#0 0x22b
%-# 0x22b
%-0 22b
%- 22b
%+#0 +00555 0x00022b
%+# +555 0x22b
%+0 +00555 0000022b
%+ +555 22b
%#0 0x00022b
%# 0x22b
%0 0000022b
% 22b
Таблица 5.
Флажки Формат %10.2e Формат %10.2f 
%-+#0 +5.50e+00 +5.50 
%-+# +5.50e+00 +5.50 
%-+0 +5.50e+00 +5.50 
%-+ +5.50e+00 +5.50 
%-#0 5.50e+00 5.50 
%-# 5.50e+00 5.50 
%-0 5.50e+00 5.50 
%- 5.50e+00 5.50 
%+#0 +005.50e+00 +0000005.50 
%+# +5.50e+00 +5.50 
%+0 +005.50e+00 +0000005.50 
%+ +5.50e+00 +5.50 
%#0 005.50e+00 0000005.50 
%# 5.50e+00 5.50 
%0 005.50e+00 0000005.50 
% 5.50e+00 5.50 
      
Читайте также:  Интересные и полезные вещи для дачи

Разница между форматами %0x и %0X заключается в том, что в первом случае шестнадцатеричная запись числа формируется из малых букв [a,b,c,d,e,f], а во втором случае – из больших букв [A,B,C,D,E,F].

Для вывода однобайтовых целочисленных данных со знаком (типа char) можно пользоваться одним из следующих форматов — %o, %0x, %0X, %i, %d, %ho, %hx, %hX, %hi, %hd. Для вывода однобайтовых целых без знака наряду с перечисленными указателями допустим формат %u. Однако следует иметь ввиду, что однобайтовые значения расширяются до двухбайтовых, сохраняя знак числа. Поэтому попытка вывести однобайтовое значение 127 по формату %u приведет к правильному результату. Но если мы по такому же формату выдадим число –5, то результатом будет число 65531 (дополнение до максимального двухбайтового числа).

Вывод числовых результатов вещественного типа предусматривает две формы отображения – с фиксированной запятой (форматные указатели %f и %lf) или с плавающей запятой (форматные указатели %e и %E). Форматные указатели %g и %G предлагают системе самой выбрать один из этих форматов, который окажется более компактным для выводимого значения. Большая или маленькая буква в форматных указателях с плавающей запятой приводит к тому, что порядку числа предшествует большая или маленькая буква «e».

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

x1=127; x2=-350; printf(«x1=%d x2=%d»,x1,x2);

на экране дисплея появится строка:

x1=127 x2=-350

Если мы хотим расположить выводимую информацию на экране дисплея с начала следующей строки, то в начале форматных указателей обычно вставляют управляющий символ «n»:

printf(«nx1=%d x2=%d»,x1,x2);

Такой же управляющий символ может быть включен в середину или в конец форматной строки. В языках C, C++ с помощью символа «» в форматную строку могут быть включены и другие управляющие символы (так называемые Escape-последовательности), список которых приведен в табл. 6.

Таблица 6.
Символ Назначение Символ Назначение
a Звуковой сигнал (код 0x07, BEL) \ Отображение символа
b Забой предыдущего символа (код 0x08, Backspace) Отображение символа ‘
f Переход на новую страницу (код 0x0C, FF) » Отображение символа »
n Переход на следующую строку (код 0x0A, LF) ? Отображение символа ?
r Возврат в начало текущей строки (код 0x0D, CR) xxx Отображение символа с восьмеричным кодом xxx
t Горизонтальная табуляция (код 0x09, HT) xhh Отображение символа с шестнадцатеричным кодом hh
v Вертикальная табуляция (код 0x0B, VT) xHH Отображение символа с шестнадцатеричным кодом HH

В строковых значениях такие символы как апостроф и вопросительный знак могут набираться и без предшествующего обратного слэша.

Date: 2015-05-22; view: 609; Нарушение авторских прав

Источник