
- •Федеральное агентство по образованию
- •Краткая история языка с
- •Особенности и основные понятия языка Си
- •Структура программы
- •Типы данных
- •Классификация типов данных
- •Вещественные
- •Логический
- •Диапазоны представления данных
- •Объявление переменных
- •Константы в языке Си
- •Операции языка Си. Приоритет операций
- •Операция присваивания
- •Арифметические операции
- •Операции отношения
- •Логические операции
- •Поразрядные операции
- •Операцияsizeof
- •Операция выбора по условию
- •Операция запятая
- •Приведение типов Неявное преобразование типов
- •Явное преобразование типов
- •Основные средства ввода-вывода на Си Понятие потока
- •Стандартные потоки
- •Функции потокового ввода-вывода
- •Функции ввода
- •Ввод символов
- •Ввод строк
- •Форматированный ввод
- •Операторы языка Си
- •Оператор if
- •Оператор switch
- •Оператор while
- •Оператор do while
- •Оператор for
- •Оператор break
- •Оператор continue
- •Функции вывода на экран
- •Вывод символов
- •Функция вывода строк puts()
- •Форматированный вывод
- •Указатели в языке Си
- •Адресная арифметика
- •Массивы
- •Функции в языке с
- •Прототипы функций
- •Указатели типа void
- •Функции, возвращающие указатели
- •Встраиваемые функции
- •Рекурсивные функции
- •Функции с переменным числом аргументов
- •Аргументы функции main()
- •Область действия и область видимости
- •Локальные переменные
- •Локальные переменные в функции Main()
- •Глобальные переменные
- •Классы памяти
- •Указатели на указатели
- •Указатели и многомерные массивы
- •Массивы указателей
- •Указатели на функции
- •Операции над строками символов Определение длины строки
- •Копирование строк
- •Поиск в строках
- •Преобразования символов в строках
- •Другие функции для работы со строками
- •Преобразования строк в числа
- •Преобразования чисел в строки
- •Функции анализа символов
- •Распределение памяти
- •Манипулирование блоками памяти
- •Типы, определяемые пользователем
- •Перечислимый тип
- •Структуры
- •Сложные структуры
- •Битовые поля в структурах
- •Объединения
- •Работа с файлами Связь между потоками и файлами
- •Типы дисковых файлов
- •Открытие файла
- •Запись и чтение данных
- •Форматированный ввод-вывод Форматированный вывод
- •Int fprintf (file *fp, char *fmt, ...);
- •Форматированный ввод
- •Символьный ввод
- •Символьный вывод
- •Блочный ввод-вывод
- •Закрытие файла
- •Директивы препроцессора
- •Директива #include
- •Директива #define
- •Директивы условной компиляции
- •Директива #undef
- •Предопределенные макросы
- •69 Лекции по курсу «Языки программирования» Часть III
Оператор break
Break - для выхода из цикла, его содержащего:
for(...)
{
...
while(...)
{
...
break;---+
... | Из цикла while вышли,
} | но остались в цикле for
... <--------+
...
}
Оператор continue
Continue - для пропуска оставшейся части выполняемого в данный момент тела цикла и перехода к следующему выполнению тела цикла:
while (...) do
{ {
... ....
+---- continue; +---- continue;
| ... | ...
+--->} +--->}
while (...);
Функции вывода на экран
Функции вывода на экран делятся на три категории, как и функции ввода: это функции вывода символов, вывода строк и форматированного вывода.
Вывод символов
Стандартные библиотечные функции вывода символов Си посылают в поток вывода одиночные символы. Функция putchar() посылает выводимые данные в stdout (обычно ассоциируемый с экраном).
Функция putchar()
Прототип функции putchar(), определенный в файле stdio.h, имеет следующий вид:
int putchar(int с);
Эта функция записывает символ с в поток stdout. Хотя в прототипе указан параметр типа int, все же следует передавать в функцию аргумент типа char. Можно, конечно, передать и значение типа int, если оно гарантированно не выходит за символьный диапазон (от 0 до 255). Функция возвращает только что записанный символ или EOF в случае ошибки.
Функция вывода строк puts()
Функция puts () имеет следующий прототип:
int puts (char *ср);
Ее аргументом является указатель ср на первый символ отображаемой строки. Функция выводит на экран всю строку, кроме завершающего нулевого символа, и добавляет символ конца строки. Затем puts() возвращает положительное значение при успешном выводе, или ЕOF в случае ошибки.
Форматированный вывод
Синтаксис:
include <stdio.h> printf(строка_формата [, аргументы]); |
Функция printf () принимает переменное число аргументов, но не менее одного.
Ее первым и единственным обязательным аргументом должна быть строка формата, которая указывает функции printf (), как оформлять выводимые данные.
Необязательные аргументы после строки формата — это переменные и выражения, значения которых нужно вывести.
Строка формата функции printf()может содержать следующие элементы.
Одну, две или ни одной спецификации формата вывода, указывающих, как выводить значения из списка остальных аргументов. Спецификация вывода начинается с символа %, за которым идет один или несколько символов.
Символы, не входящие в спецификации формата, которые отображаются на экране в том виде, в каком они приведены в строке.
Пример 1.
Спецификация вывода имеет следующий формат:
%[флаг] [ширина_поля] [. [ точность] ] [ l] символ_формата
Компоненты, стоящие в квадратных скобках, являются необязательными.
Единственной обязательной частью спецификации вывода (кроме символа %) является символ формата. Символы формата и их значения перечислены в табл. 3.
Таблица 3 – Символы формата в спецификациях вывода
Символ |
Значение |
d, i |
Целое десятичное число со знаком |
u |
Целое десятичное число без знака |
o |
Целое восьмеричное число без знака |
x, X |
Целое шестнадцатеричное число без знака в нижнем (х) или верхнем (X) регистре |
c |
Одиночный символ (аргумент должен представлять его код ASCII) |
e, E |
Вещественное число типа float или double в экспоненциальной форме (например, 123.45 выводится в виде 1.234500е+002). Если не указана точность, то выводится шесть цифр после точки. Регистром символов можно управлять, задавая спецификацию е или Е |
f |
Вещественное число типа float или double в дробно-десятичной форме (например, 123.45 выводится в виде 123.450000). Если не указана точность, то выводится шесть цифр после точки |
g, G |
Используется формат е, Е или f. Формат е или Е применяется в том случае, если показатель степени меньше -3 или больше, чем точность (по умолчанию 6). В противном случае используется формат f. Лишние нули отбрасываются |
n |
Ничего не выводится. Аргумент, соответствующий этой спецификации, должен быть указателем на переменную типа int. Функция printf() присваивает этой переменной количество выведенных символов |
s |
Строка символов. Аргумент должен быть указателем на строку типа char. Строка выводится, пока не встретится нулевой символ или пока не будет выведено заданное количество символов. Завершающий нулевой символ не выводится |
% |
Вывод символа % |
Непосредственно перед символом формата можно поставить модификатор l. Он применяется только к спецификациям о, u, х, X, i, d. Этот модификатор указывает, что целочисленный аргумент имеет тип long, а не просто int. В приложении к символам формата е, Е, f, указывает, что аргумент имеет тип double. Если модификатор l поставить перед любым символом формата, он будет проигнорирован.
Модификатор ll работает точно так же, как и l, только задает тип long long, а не long.
Спецификация точности состоит из десятичной точки (.), за которой может следовать число. Спецификация точности применима только к символам формата е, Е, f, g, G и s. Она указывает количество цифр после десятичной точки, которые следует вывести, а в спецификации s — количество выводимых символов. Если после десятичной точки в спецификации больше ничего нет, принимается точность 0.
Спецификация ширины поля задает минимальное количество символов, быть выведено. Эта спецификация может иметь одну из следующих форм.
Десятичное целое число, не начинающееся с 0. Выведенное значение дополняется пробелами слева, чтобы заполнить указанную ширину.
Десятичное целое число, начинающееся с 0. Выведенное значение дополняется нулями слева, чтобы заполнить указанную ширину.
Символ *. В качестве ширины поля берется значение следующего аргумента в списке, который должен иметь тип int. Например, если переменная w имеет тип int и значение 10, то оператор printf ("%*d", w, a); выведет на экран значение а с шириной поля 10.
Если ширина поля не указана или ее недостаточно для вывода значения, то значение выводится с такой шириной, как необходимо.
Последней необязательной частью строки формата printf() является флаг, который должен стоять непосредственно после символа %. Имеется четыре допустимых флага.
– |
Выводимое значение следует выровнять по правому краю поля вместо левого, как это делается по умолчанию. |
+ |
Число должно обязательно выводиться со знаком + или - перед ним. |
' ' |
Означает, что перед положительным числом обязательно должен стоять пробел. |
# |
Применяется только к спецификациям х, X или о. Указывает, что ненулевые шестнадцатеричные значения (в случае х или X) должны отображаться с символами 0х или 0Х, а восьмеричные (в случае о) — с нулем перед ними. |
Cтрока формата printf () может содержать специальные символы для управления выводом. В табл. 4 перечислены наиболее распространенный из них.
Таблица 4 – Часто используемые специальные управляющие символы
Символ |
Значение |
Символ |
Значение |
\a |
Звуковой предупреждающий сигнал |
\\ |
Обратная косая черта |
\b |
Возврат на один символ назад |
\? |
Знак вопроса |
\n |
Перевод строки |
\’ |
Одинарная кавычка |
\t |
Горизонтальная табуляция |
\” |
Двойная кавычка |
\v |
Вертикальная табуляция |
\ddd |
ASCII символ в 8-миричном представлении |
\r |
Возврат каретки |
\xdd |
ASCII символ в 16-тиричном представлении |
\f |
Прогон страницы |
|
|