Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операторы языка C++_new — копия.docx
Скачиваний:
0
Добавлен:
11.02.2026
Размер:
107.2 Кб
Скачать

Материал для самостоятельного изучения. Функции printf () и scanf ()

  • осуществляют форматированный вывод и ввод в стандартные потоки (по умолчанию на консоль)

  • прототипы в файле STDIO.H

int printf ( char * управляющая строка , arg… );

int scanf ( char * управляющая строка , arg…) ;

  1. первый параметр всегда символьная строка, содержащая некоторые символы и команды (спецификаторы) формата сообщающие какие данные надо вводить или как надо выводить аргументы.

Спецификаторы задаются с помощью знака % с буквами и цифрами

  1. последующие параметры (их переменное число)- аргументы

для printf – это значения выражений, в частности числа, переменные, константы, строки.

для scanf – это список адресов переменных типы которых, указанных в строке формата для каждого аргумента последовательно (первый формат соответствует первому аргументу, второй – второму и т. д.)

printf

Функция printf() возвращает общее число выводимых значений при успешном выводе

int result;

result =printf (“ … \n”, …)

int

%d , %i – для вывода десятеричных значений;

%0 - в восьмеричном формате;

% x, % X –в шестнадцатеричном;

int v = 255;

printf (“ значение %d в восьмеричном формате %0\n”, v, v )

printf('' значение %d в шестн. формате %x и %X\n’’, v, v,v)

значение 255 в восьмеричном формате 377

значение 255 в шестн. формате ff и FF

unsigned int

%u unsigned int a = 42000

printf (“%u % d\n’’, a, a ) 42000

-23536

long float shot unsigned long double

long int % ld % f % hu % lf

символы % и 0 и x ,X

%% %#0 %#x %#X

char

% c printf ( “ буква %c\n’’ , ‘A’); буква А

printf ( “ буква %c\n’’ , 65); буква А

Вывод чисел с плавающей точкой в экспоненциальном виде: %e или %E

float a=3.14159 , b= 2.0031;

printf (‘’ %e %E” , a, b )

3.14159e +00 2.0031E+00

на усмотрение машины %g

printf ( “ %g\n’’, 0.1234) ; printf (“%g\n”,0.000001234)

    1. 1.234e-06

Строки

%s char t [255]=” Pascal”;

printf ( “ Название-%s\n”, t)

Название – Pascal

Вывод указателей

%p , %n

int v ; printf(“Адрес переменной=%p\n”, &v)

Адрес переменной= FFF4

Вывод числа со знаком(положительным и отрицательным)

%+d %+f int a=5, b=-5; float c= 1.5, d=-1.5;

printf(“%+d %+d %+f %+f ” , a, b , c , d );

+5 -5 +1.5 -1.5

Количество символов- мест для вывода

int v = 5;

printf( “%1d \n”,v) 5

printf( “%2d \n”,v) 5

printf( “%3d \n”,v) 5

Если дано меньше, чем надо для вывода целого, символьной строки, добавляется необходимые места

Вывод целых с ведущими нулями

printf( “ %01d\n”, v) 5

printf( “ %02d\n”, v) 05

Форматирование чисел с плавающей точкой

  1. число указывает общее количество символов для вывода

  2. число указывает количество символов справа от десятичной точки

float f =1.23456;

printf( “ %8.1f\n”,f) _ _ _ _ _ 1.2

printf( “ %8.3f\n”,f) _ _ _ 1.235

форматирование экспоненциального представления аналогично:

printf( “ %12.1 e\n”, f) _ _ _ _ _ 1.2e+00

printf( “ %12.5 e\n”, f) _ 1.23456e+00

Выравнивание влево и вправо:

Printf ( “ %5d , 5) _ _ _ _ 5

Printf ( “ %-5d , 5) 5 ­_ _ _ _

scanf()

Функция производит ввод данных с клавиатуры в переменные, адреса которых задаются аргументами (arg)

Возвращаемое значение функцией – количество успешно введенных и присвоенных значений

Управляющая строка содержит спецификации формата, пробелы и др. символы.

Спецификации:

%c - чтение символа

%d – чтение десятичного целого

%i – чтение десятичного целого

%e- чтение числа типа float

%h- чтение числа типа short int

%0- чтение восьмеричного числа

%s- чтение строки

%x- чтение шестнадцатеричного числа

%p- чтение указателя

-Спецификация формата не содержит пробелов.

Пробельные символы - пробелы ( _ ), символы табуляции ( ‘\t’) , новой строки ('\n') перевода каретки ('\r’) - разделители между двумя вводимыми символами. Символы очередного значения выделяются до первого пробельного символа.

Другие символы (ненулевые) указывают на чтение и отбрасывание этих символов, это любые символы, которые надо игнорировать.

scanf(“%dplus%d” , &i , &j) поток символов 5plus10

i=5 , j = 10

Переменные должны указываться адресом:

scanf(“%d %d “, &i , & j);

scanf(“%5s “, str)

Возможно задать множество поиска - список символов в квадратных скобках

char s[10],t[10];

scanf (“%[0123456789]%s’’,s ,t )

Поток ввода : 123прлаы456

S= “123” t= “прлаы456”