Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Все лекции программирование

.pdf
Скачиваний:
25
Добавлен:
13.03.2016
Размер:
1.94 Mб
Скачать

Спецификация преобразования

Код

Формат

%a

Шестнадцатеричное в виде 0xh.hhhhp+d (только С99)

%A

Шестнадцатеричное в виде 0Xh.hhhhP+d (только С99)

%c

Символ

%d

Десятичное целое со знаком

%i

Десятичное целое со знаком

%e

Экспоненциальное представление ('е' на нижнем регистре)

%E

Экспоненциальное представление ('Е' на верхнем регистре)

%f

Десятичное с плавающей точкой

%g

В зависимости от того, какой вывод будет короче, используется %е или %f

%G

В зависимости от того, какой вывод будет короче, используется %Е или %F

%o

Восьмеричное без знака

%s

Строка символов

%u

Десятичное целое без знака

%x

Шестнадцатеричное без знака (буквы на нижнем регистре)

%X

Шестнадцатеричное без знака (буквы на верхнем регистре)

%p

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

 

Аргумент, соответствующий этому спецификатору, должен быть указателем на целочисленную

%n

переменную. Спецификатор позволяет сохранить в этой переменной количество записанных

 

символов (записанных до того места, в котором находится код %n)

%%

Выводит знак %

Модификаторы

Целое число, расположенное между знаком % и кодом формата, играет роль модификатора минимальной ширины поля.

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

По умолчанию весь вывод выравнивается по правому краю. Вывод по левому краю можно назначить принудительно, поместив знак минус прямо за %.

Модификаторы. Пример.

#include <stdio.h> int main()

{

printf("%f\n", 10.12304);

10.123040

printf("%10f\n", 10.12304);

10.123040

printf("%012f\n", 10.12304);

00010.123040

printf("%.4f\n", 123.1234567);

123.1235

printf("%3.8d\n", 1000);

00001000

printf("%10.15s\n", "The Simple Check.");

The Simple Chec

printf("Left: %8d\n", 100);

Left:

100

printf("Right: %-8d\n", 100);

Right: 100

return 0;

 

 

}

Функция scanf()

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

Прототип функции scanf():

int scanf(форматная строка, список аргументов);

Эта функция возвращает количество тех элементов данных, которым было успешно присвоено значение. В случае ошибки scanf() возвращает EOF.

Спецификация преобразования

Код

Значение

 

 

%a

Читает значение с плавающей точкой (только С99)

 

 

%c

Читает одиночный символ

 

 

%d

Читает десятичное целое число

 

 

%i

Читает целое число как в десятичном, так и восьмеричном или шестнадцатеричном формате

 

 

%e

Читает число с плавающей точкой

 

 

%f

Читает число с плавающей точкой

 

 

%g

Читает число с плавающей точкой

 

 

Читает восьмеричное число

 

 

%s

Читает строку

 

 

%x

Читает шестнадцатеричное число

 

 

%p

Читает указатель

 

 

%n

Принимает целое значение, равное количеству уже считанных символов

 

 

%u

Читает десятичное целое число без знака

 

 

%[]

Читает набор сканируемых символов

 

 

%%

Читает знак процента

 

 

Особенности ввода

#include <stdio.h>

 

int main()

 

{

 

int a,i;

 

float b,c;

 

char symbol, str[10], str1[80], str2[80];

 

scanf("%d",&a);

10

fflush(stdin);

 

scanf("%c",&symbol); fflush(stdin); scanf("%f",&b); fflush(stdin); scanf("%5s",str); fflush(stdin);

scanf("%d%[abcdefg] %s", &i, str1, str2);

printf("%d, ", a); printf("%c, ", symbol); printf("%d, ", b); printf("%s, ", str);

printf("%d %s %s", i,str1,str2);

return 0;

}

f

5.5

fafdfadfadsf

10bde 55abc

10, f, 0, fafdf, 10 bde 55abc

Подавление ввода

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

Например, когда выполняется оператор

scanf("%d%*c%d",&x, &y);

можно ввести пару координат 10,10. Запятая будет прочитана правильно, но ничему не будет присвоена. Подавление присвоения особенно полезно тогда, когда нужно обработать только часть того, что вводится.

Хороший стиль

для печатающей функции последний символ должен быть символом новой строки \n

вставляйте пробел после каждой запятой

делайте имена переменных осмысленными

начинайте имя переменной с маленькой буквы

корректно используйте функцию fflush()

Операции

Существует четыре основных класса операций:

арифметические,

логические,

поразрядные,

операции сравнения.

Оператор присваивания

В одном операторе присваивания можно присвоить одно и то же значение многим переменным. Для этого используется оператор множественного присваивания, например:

x = y = z = 0;

Составное присваивание – это разновидность оператора присваивания, в которой запись сокращается и становится более удобной в написании.

x = x+10;

можно записать как

x += 10;

Любой оператор вида

переменная = переменная оператор выражение;

можно записать как

переменная оператор = выражение;