- •Лабораторная работа № 1
- •Далее создадим файл:
- •Задания1
- •Лабораторная работа № 2
- •Консольный ввод-вывод
- •Чтение и запись символов
- •Чтение и запись строк
- •Форматированный консольный ввод-вывод
- •Форматированный вывод
- •Форматированный ввод
- •7. Варианты задания
- •Лабораторная работа № 3
- •5.2 Оператор if
- •Лабораторная работа № 4
- •Содержание отчета
- •Постановка задачи.
- •Общие сведения
- •Лабораторная работа № 5
- •Оператор for
- •Вариации цикла for
- •Бесконечный цикл
- •Циклы for без тела
- •Задание 2. Циклический вычислительный процесс конечные суммы и произведения
- •Лабораторная работа № 6
- •Оператор цикла while
- •Оператор do … while
- •Оператор break
- •Оператор continue
- •Лабораторная работа № 7
- •5.1 Одномерный массив
- •Создание указателя на массив
- •5.3 Индексация с помощью указателей
- •Сортировка
- •Методические указания.
- •Лабораторная работа № 8
- •Двухмерные массивы
- •Лабораторная работа № 9
- •Лабораторная работа № 11
- •Задача 2. Параметры функции
- •Лабораторная работа № 12
- •Варианты заданий
- •Лабораторная работа № 13
- •Некоторые операции над матрицами
- •Методические указания
- •Варианты заданий
- •Лабораторная работа № 14
- •Решение уравнения методом деления отрезка пополам (бисекций)
- •Методические указания
- •Лабораторная работа № 15
- •Вычисление определенного интеграла
- •6.2.1 Метод средних прямоугольников
- •6.2.1 Метод трапеций
- •Методические указания
- •Варианты заданий
- •Лабораторная работа № 10
- •Структуры (struct)
- •Лабораторная работа № 16
- •Директива #include
- •7. Методические указания
- •8. Варианты заданий.
- •Лабораторная работа № 17
- •Указатель на файл
- •Открытие файла
- •Перенаправление потока
- •Чтение из потока и запись в поток
- •Закрытие потока
- •Использование функций feof() и ferror()
- •Варианты заданий
- •Лабораторная работа № 18
- •Функции обработки символов
- •Функции обработки строк
- •Варианты заданий
- •Лабораторная работа № 19
- •Структуры
- •6.1.1 Доступ к элементам структуры
- •6.1.2 Присваивание структур
- •Массивы структур
- •Передача структур в функции
- •Передача членов структур в функции
- •Передача всей структуры в функцию
- •Указатели на структуры
- •Объявление указателя на структуру
- •Использование указателей на структуру
- •Массивы и структуры в структурах
- •Функции fread () и fwrite ()
- •Варианты заданий
- •Лабораторная работа № 20
- •Например, формула
- •Задание на программирование
Консольный ввод-вывод
Консольный ввод-вывод относится к событиям, возникающим от клавиатуры и на экране. Поскольку ввод и вывод на консоль – это типичные операции, была создана подсистема файловой системы ввода-вывода для работы исключительно с консолью. Эти функции направляют операции в стандартный ввод (stdin) и стандартный вывод (stdout) системы. Возможно перенаправить консольный ввод на другие устройства. Для простоты предполагается, что консоль – это устройство, используемое стандартными способами.
Чтение и запись символов
Простейшей из стандартных функций ввода-вывода на консоль является getchar(), читающая символы с клавиатуры, и putchar(), печатающая символ на экран в текущей позиции курсора. Тем не менее getchar() имеет некоторые существенные ограничения, описываемые ниже. В Borland C добавлена функция getche(), которая читает символ с клавиатуры без ожидания нажатия клавиши <Enter>. Ниже показаны прототипы функций getchar(), getche() и putchar():
int getchar(void);
int getche(void);
int putchar(int ch);
Функция getchar() читает символ с клавиатуры и ожидает нажатие <Enter>. Функция getche() читает символ с клавиатуры и не ожидает нажатие <Enter>. Функция возвращает значение ch в случае успеха или EOF в случае ошибки (EOF – это макроопределение, означающее конец файла). Функции getchar() и putchar() требуют заголовочного файла stdio.h. Функция getche() требует заголовочного файла conio.h. Следующий пример программы вводит символы с клавиатуры и выводит их в противоположном регистре. То есть прописные символы будут выведены строчными, а строчные – прописными. Программа останавливается при обнаружении точки. Заголовочный файл ctype.h содержит прототипы функций для обработки символов.
/* переключатель регистра */
#include <conio.h>
#include <stdio.h>
#include <ctype.h>
int main(void) {
char ch;
do {
ch=getche();
if(islower(ch)) putchar(toupper(ch));
else putchar(tolower(ch));
} while (ch!=’.’); /* использование точки для остановки */
}
Чтение и запись строк
Функции gets() и puts() позволяют читать строки с клавиатуры и выводить их на экран.
Функция gets() читает строку символов, введенных с клавиатуры и помещает их по адресу, указанному в аргументе. Можно набирать символы, пока не нажата клавиша < >. Символ, соответствующий клавише Enter – возврат каретки – не станет частью строки. Функция gets() имеет прототип:
char *gets(char *str);
где str – это массив символов. Функция gets() возвращает указатель на str. Следующая программа осуществляет чтение строки в массив str и выводит ее длину:
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[80];
gets(str);
printf(“Length is %d”,strlen(str);
}
Имеется проблема, связанная с gets(), о которой следует знать: нельзя переходить границы массива, с которым она вызывалась. Для предыдущего примера это 80.
Функция puts() выводит передаваемый ею аргумент на экран, завершая вывод переходом на новую строку. Она имеет следующий прототип:
int puts(const char *str);
Здесь str – выводимая строка. Функция возвращает нецелое число в случае удачи и EOF в случае неудачи. Она воспринимает коды и с обратным слэшем, как и printf(), например \t воспринимается как табуляция. Вызов функции puts() требует гораздо меньше процессорного времени на реализацию, чем printf(). Она не может выводить числа и выполнять преобразование форматов.