- •1. Цель работы
- •2. Базовые понятия языка
- •2.1. Алфавит языка Си
- •2.2. Константы
- •2.3. Идентификатор
- •2.4. Объявление переменных
- •2.5. Стандартные типы данных
- •2.6. Данные вещественных типов
- •2.7. Инициализация переменных
- •3. Операции языка си
- •3.1. Арифметические операции
- •3.2. Поразрядные операции
- •3.3. Операции отношения (сравнения)
- •3.4. Логические операции
- •3.5. Операции присваивания
- •3.6. Операция sizeof
- •3.7. Операция условие
- •3.8. Разделитель точка с запятой
- •3.9. Приоритеты операций и порядок вычислений
- •4. Операторы языка си
- •4.1. Составной оператор
- •4.2. Условный оператор
- •4.3. Оператор switch
- •4.4. Оператор break
- •4.5. Оператор for
- •4.6. Оператор while
- •4.7. Оператор do while
- •4.8. Оператор continue
- •4.9. Оператор goto
- •5. Указатели, массивы, строки
- •5.1. Указатели
- •5.2. Массивы
- •5.3. Строки
- •5.6. Двумерные массивы
- •5.7. Инициализация массивов
- •5.8. Связь указателей и массивов
- •6. Функции
- •6.1. Определение и вызов функций
- •6.2. Передача параметров функции main
- •7. Структуры и объединения
- •7.1. Структуры
- •7.2. Объединения (смеси)
- •7.3. Поля битов
- •8. Ввод-вывод
- •8.1. Консольный ввод-вывод
- •8.2. Потоковый файловый ввод-вывод
- •9. Вопросы для самостоятельного изучения
- •10. Порядок выполнения лабораторных работ и содержание отчета
- •11. Литература
8.1. Консольный ввод-вывод
К консольным операциям ввода-вывода относят операции ввода с клавиатуры и вывода на экран. Рассмотрим работу некоторых функций консольного ввода-вывода.
1. int getche(void). Ожидает нажатия клавиши и возвращает код символа. Символ отображается на экране. Прототип функции содержится в файле conio.h.
2. int getch(void). Ожидает нажатия клавиши и возвращает код символа. Символ не отображается на экране. Прототип функции содержится в файле conio.h.
3. int putchar(int c). Вывод символа на экран в текущую позицию. Прототип функции содержится в файле stdio.h.
4. int getchar(void). Буферизированный ввод символов. Требует нажатия клавиши Enter. Прототип функции содержится в файле stdio.h.
5. int kbhit(void). Возвращает "1" если нажата какая-либо клавиша и "0" если не нажата. Прототип функции содержится в файле conio.h.
В следующем примере программа выводит на экран введенный с клавиатуры символ. Если символ не введен, то ожидания не происходит.
int c;
if (kbhit()){
c=getch();
putchar(c);
}
Следующая строка будет ожидать нажатия любой клавиши.
while(!kbhit());
6. char *gets(char *s). Ввод строки с клавиатуры. Окончание ввода по клавише Enter. Функция автоматически в конце строки ставит символ с кодом ноль. Прототип функции содержится в файле stdio.h.
7. int puts(char *s). Вывод строки на экран. Всегда происходит переход на новую строку. Прототип функции содержится в файле stdio.h. Следует отметить, что функция puts работает быстрее функции форматированного вывода printf.
8. int printf(const char *format, …). Форматный вывод информации на экран. Функцию можно использовать следующим образом
int printf(форматная строка, список аргументов);
Форматная строка ограничена кавычками и может включать произвольный текст и управляющие команды. Текст из форматной строки просто копируется в выходной поток. Список аргументов включает выражения, значения которых должны быть выведены на экран. Количество аргументов и их типы должны соответствовать последовательности управляющих команд. Для каждого аргумента должна быть указана своя команда в форматной строке. Управляющая команда имеет следующую форму:
%флаги ширина_поля.точность команда
Символ % является признаком управляющей команды. Управляющая команда не должна содержать пробелы. Перечислим возможные команды форматной строки.
d |
десятичное целое со знаком |
u |
десятичное целое без знака |
o |
восьмеричное целое без знака |
x или X |
шестнадцатеричное целое без знака |
f |
вещественное значение |
e или E |
вещественное значение в экспоненциальной форме |
c |
символ |
s |
строка |
p |
значение адреса |
Рассмотрим пример.
int a=10;
float b=1.15;
printf(“Целое a=%d вещественное b=%f”, a,b);
Значения переменных a и b будут подставлены в текст форматной строки вместо соответствующих управляющих команд.
Флаги являются необязательной частью форматной строки.
- |
Выводимое значение выравнивается по левому краю. По умолчанию — по правому. |
+ |
Если выводимое значение имеет знаковый формат, то знак выводится всегда. По умолчанию выводится только знак “-“. |
# |
При использовании флага с командами “o” и “x” любое ненулевое значение выводится с предшествующим 0 или 0x. |
Ширина_поля задается целым числом и определяет минимальное количество позиций, отводимых для представления выводимого значения. Точность указывает число цифр после десятичной точки для вещественных чисел. Ширина_поля и точность являются необязательными частями форматной строки.
Примеры указания ширины поля и точности:
%7d — вывод целого десятичного в поле из семи позиций;
%8.3f — вывод вещественного числа в поле из восьми позиций и тремя цифрами после запятой.
9. int scanf(const char *format, …). Читает последовательность символов из входного потока и интерпретирует их в соответствии с форматной строкой как целые числа, вещественные числа, символы, строки. Форматная строка работает подобно функции printf. Каждый аргумент должен быть указателем на переменную, в которую будет записано очередное значение данных. Форматная строка может содержать те же управляющие команды, что и функция printf кроме команды %p.
Пример ввода данных с клавиатуры.
int a;
float b;
scanf(“Введите: a=%d b=%f”,&a,&b);
