Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Samostoyatelnye_po_S.doc
Скачиваний:
5
Добавлен:
01.07.2025
Размер:
671.74 Кб
Скачать

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

Структура (синтаксис) звернення до функції:

printf ("рядок формату", арг1, арг2, ..., аргN);

В якості аргументів функції арг1 ... аргN використовуються ідентифікатори змінних або вирази. Список аргументів може бути порожнім.

Рядок формату записується в подвійних лапках і може містити:

будь-який текст;

специфікатори форматів (за кількістю аргументів), позначаються символом%, містять інформацію про тип виведеного значення і його модифікації;

керуючі символи.

Нагадаємо, що керуючий символ, або ESC-послідовність, формується з символу зворотної похилої риси \, званого в мові C escape-символом, і латинської літери. Приклади керуючих послідовностей наведені в п. 1.3.1.

Основні формати

Кожному аргументу повинен відповідати тільки один специфікатор формату. Вид формату визначається типом аргументу.

Цілі числа:

% D - аргумент розглядається як ціле 10-тичного число зі знаком;

% U - ціле 10-тично без знака;

% X - 16-річної ціле без знаку;

% O - 8-річно ціле без знаку.

Речові числа:

% F - аргумент записується у формі дійсного числа з фіксованою крапкою (наприклад, 0.036);

% E - аргумент записується у формі числа з плаваючою точкою.

Символи і рядки:

% C - аргумент розглядається як значення типу char, і на екран виводиться один символ;

% S - аргумент розглядається як рядок.

Повернемося до програми "двічі два" і додамо в неї вивід результату на екран:

# Include <stdio.h>

int main (void)

{

float x = 2., y;

y = x * x;

printf ("\ n y (% f) =% f", x, y);

return 0;}

Керуюча рядок містить ESC-символ перекладу рядка '\ n', текст і два специфікатора формату (% f): перший для аргументу x, другий - для аргументу y.

Виклик функції printf () можна записати і в іншому вигляді, включивши в неї обчислення виразу:

# Include <stdio.h>

int main (void)

{

float x2.;

printf ("\ n y (% f) =% f", x, x * x);

return 0;}

В результаті на екрані: y (2.000000) = 4.000000.

Модифікації форматів

Специфікатори формату цілих чисел можна записати у вигляді:

% Nd,% Nu,% No,% Nx,

де N - натуральне число, що визначає кількість позицій, що відводяться під значення числа (ширина поля виведення).

Для форматів дійсних чисел специфікатор формату представляється у вигляді:

% N.Mf або% N.Me,

де N і M - натуральні числа, що визначають загальне число позицій, відведених під число, N (ширина поля виведення) і число знаків у дробовій частині M (точність відображення).

Модифікуємо формати в нашому прикладі:

# Include <stdio.h>

int main (void)

{

float x = 2.;

printf ("\ n y (% 4.1f) =% 6.2f", x, x * x);

return 0;

}

Результат на екрані: y (2.0) = 4.00.

Зауважимо, що відповідно до використовуваних форматами для значення змінної x відведено 4, а для y - 6 позицій. Це знаходить своє відображення і на екрані, тобто після відкриваючої круглої дужки присутній один пробіл (саме значення x займає 3 позиції), а після знаку рівності - 2 пробілу (y займає 4 позиції).

При неправильно заданому форматі, коли ширина поля виведення виявляється менше, ніж необхідно для представлення значення змінної, компілятор мови додає відсутні позиції, виправляючи помилку програміста.

Аналогічно можна форматувати висновок символьних рядків:% N.Ms, тут в специфікатор перетворення N - ширина поля виведення рядка, M - максимальна кількість виведених на екран символів.

Наприклад, при виконанні оператора

printf ("% 4s% 3d% 7.3s \ n", "Вартість", 1400, "рублів");

на екрані буде виведена наступна інформація:

Вартість (1 пробіл) 1400 (5 пробілів) руб

Питання для контролю:

1. Що робить команда printf()?

2. Що може містити рядок функції printf(), що знаходиться в лапках?

3. Які основні формати для функції printf()?

4. Які є модифікації форматів?

Література:

1. Шилдт Г.: Пер. с англ. –М.: Издательский дом “Вильямс”, 2002. –704с. – с. 302-305

Урок №45

(згідно робочої навчальної програми)

Тема:Функція scanf() і родинні з нею функції

Питання:

1.Функція форматованого введення scanf ()

2. Робота функції scanf ()

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]