- •Часть 1
- •Общие сведения Сведения об эумк
- •Методические рекомендации по изучению дисциплины
- •Рабочая учебная программа
- •Часть 2 184
- •Пояснительная записка
- •Содержание дисциплины
- •Индивидуальные практические работы, их характеристика
- •Контрольные работы, их характеристика
- •Литература
- •Основная
- •Дополнительная
- •Перечень компьютерных программ, наглядных и других пособий, методических указаний и материалов и технических средств обучения
- •Учебно-методические пособия
- •Алфавит языка
- •Лексемы
- •Идентификаторы
- •Ключевые слова
- •Знаки операций
- •Константы
- •Комментарии
- •Тема 2. Типы данных Концепция типа данных.
- •Простые типы данных
- •Целый тип int
- •Символьный тип char
- •Типы с плавающей точкой: float, double, long double
- •Тема 3. Выражения
- •Переменные
- •Именованные константы
- •Операции
- •Операции присваивания
- •Инкремент и декремент
- •Унарный плюс и унарный минус (строка 2)
- •Явное преобразование типа
- •Операция определения размера sizeof
- •Деление и остаток от деления
- •Логические операции не, и, или (!, &&, ||)
- •Условная операция (?:)
- •Операция запятая (,)
- •Операции взятия адреса и разадресации
- •Тема 4. Операторы
- •Структура программы
- •Тема 5. Базовые конструкции структурного программирования
- •Операторы ветвления
- •1. Условный оператор if
- •2. Оператор switch
- •Операторы цикла
- •1. Цикл с предусловием while
- •2. Цикл с постусловием do-while
- •3. Цикл с параметром for
- •Тема 6. Массивы
- •Тема 7. Указатели и массивы
- •Тема 8. Строки символов
- •Тема 9. Структуры
- •Массивы структур
- •Битовые поля
- •Объединения
- •Перечисления
- •Тема 10. Функции
- •Глобальные, локальные и статические переменные
- •Параметры функции
- •Передача массивов в качестве параметров функции
- •Функция main, ее параметры
- •Функции стандартной библиотеки
- •Функции форматного вывода и ввода printf и scanf
- •Тема 11. Файлы
- •Тема 12. Работа с динамической памятью
- •Тема 13. Динамические структуры данных
- •Очереди
- •Линейные списки
- •Бинарные деревья
- •Практический раздел Общие указания Указания по выбору варианта
- •Порядок оформление итогового отчета
- •Индивидуальные практические работы Индивидуальная практическая работа 1 Методические указания
- •Варианты заданий.
- •Индивидуальная практическая работа 2 Методические указания
- •Варианты заданий
- •Контрольные работы Контрольная работа 1 Методические указания
- •Варианты заданий
- •Контрольная работа 2 Методические указания
- •Варианты заданий
Функции форматного вывода и ввода printf и scanf
Функция printf стандартной библиотеки предназначена для форматного вывода данных и имеет следующий прототип:
int printf (char *format, arg1, arg2, . . . );
Функция printf преобразует, форматирует и печатает свои аргументы arg1, arg2 и т.д. в стандартном выводе (обычно на экране) в соответствии с информацией, заданной аргументом format, и возвращает количество напечатанных символов.
Форматная строка format содержит два вида объектов: обычные символы, которые непосредственно копируются в выходной поток, и спецификации преобразования, каждая из которых вызывает преобразование и печать очередного аргумента функции printf. Любая спецификация преобразования начинается знаком % и заканчивается символом-спецификатором. Между знаком % и символом-спецификатором могут быть расположены (в указанном ниже порядке) следующие элементы:
Знак минус, предписывающий «прижать» преобразованный аргумент к левому краю поля.
Число, задающее минимальную ширину поля. Преобразованный аргумент будет занимать поле по крайней мере указанной ширины. При необходимости лишние позиции слева (или справа при левостороннем выравнивании) будут заполнены пробелами.
Точка, отделяющая ширину поля от величины, устанавливающей точность.
Число (точность), задающее максимальное количество печатаемых символов строки, или количество цифр после десятичной точки – для плавающего значения, или минимальное количество цифр – для целого значения.
Буква h, если печатаемое целое должно рассматриваться как short, или l (латинская буква «эль»), если целое должно рассматриваться как long.
Перечень символов-спецификаторов и задаваемые ими преобразования вывода
Символ-спецификатор |
Тип аргумента |
Вид печати |
d, i |
int |
Десятичное целое |
O |
int |
Беззнаковое восьмеричное целое (без ведущего нуля) |
x, X |
int |
Беззнаковое шестнадцатиричное целое (без ведущих 0х и 0Х), для 10,11, … ,15 используются abcdef или ABCDEF |
u |
int |
Беззнаковое десятичное целое |
C |
int |
Одиночный символ |
S |
char * |
Печатаются символы, расположенные до нуль-символа (‘\0’), или в количестве, заданном точностью |
F |
double |
[ - ]m.dddddd, где количество цифр d задается точностью (по умолчанию равно 6) |
e, E |
double |
[ - ]m.ddddddexx или [ - ]m.ddddddExx, где количество цифр d задается точностью (по умолчанию равно 6) |
g, G |
double |
Применяется %e или %E, если порядок меньше, чем -4, или больше или равен точности; в противном случае применяется %f. «Хвостовые» нули и «хвостовая» десятичная точка не печатаются |
P |
void * |
Указатель (представление зависит от реализации) |
% |
|
Печатается знак % |
Функция scanf стандартной библиотеки предназначена для форматного ввода данных и имеет следующий прототип:
int scanf (char *format, arg1, arg2, . . . );
Функция scanf читает символы из стандартного входного потока (обычно с клавиатуры), интерпретирует их согласно спецификациям строки format и рассылает результаты в свои аргументы arg1, arg2 и т.д. Эти аргументы, каждый из которых должен быть указателем, определяют, где будут запоминаться должным образом преобразованные данные.
Функция scanf прекращает работу, когда оказывается, что исчерпался формат или вводимая величина не соответствует управляющей спецификации. В качестве результата scanf возвращает количество успешно введенных элементов данных. Каждое очередное обращение к scanf продолжает ввод с символа, следующего сразу за последним обработанным. При необходимости можно очистить входной поток от содержащихся в нем данных с помощью оператора:
fflush(stdin);
Строка format, управляющая преобразованиями ввода, может включать в себя следующие элементы:
Пробелы или табуляции, которые игнорируются.
Обычные литеры (исключая %), которые, как ожидается, совпадут с очередными непробельными символами входного потока.
Спецификации преобразования, каждая из которых начинается со знака % и завершается символом-спецификатором типа преобразования. В промежутке между ними могут располагаться, причем в указанном здесь порядке: знак * (признак подавления присваивания); число, определяющее ширину поля; буква h, l или L, указывающая на размер получаемого значения.
Перечень символов-спецификаторов и задаваемые ими преобразования ввода
Символ-спецификатор |
Вводимые данные |
Тип аргумента |
D |
Десятичное целое |
int * |
I |
Целое, которое может быть восьмеричным (с ведущим 0) или шестнадцатиричным (с ведущими 0х или 0Х) |
int * |
O |
Восьмеричное целое (с ведущим нулем или без него) |
int * |
u |
Беззнаковое десятичное целое |
unsigned int * |
X |
Шестнадцатиричное целое (с ведущими 0х или 0Х или без них) |
int * |
C |
Следующие символы ввода (по умолчанию один) размещаются в указанном месте. Пробельные символы не пропускаются; чтобы прочесть очередной символ, отличный от пробельного, используйте %1s |
char * |
S |
Строка символов (без обрамляющих кавычек). Завершающий нуль-символ (‘\0’) будет добавлен |
char * |
e, f, g |
Число с плавающей точкой, возможно со знаком; обязательно присутствие либо десятичной точки, либо экспоненциальной части, а возможно, и обеих вместе |
float * |
% |
Сам знак %, никакое присваивание не выполняется |
|
Перед символами-спецификаторами d, i, o, u, x может стоять буква h, указывающая на то, что соответствующий аргумент должен иметь тип short * (а не int *), или l (латинская «эль»), указывающая на тип long *. Аналогично, перед символами-спецификаторами e, f, g может стоять буква l, указывающая, что тип аргумента – double * (а не float *).