- •Оглавление
- •Требования к выполнению работ
- •Лабораторная работа №1. “Вычисление функций с использованием их разложения в степенной ряд”
- •Краткие теоретические сведения
- •Структура программы
- •Константы и переменные
- •Операции
- •Ввод и вывод в стандартном Си
- •Составные операторы
- •Операторы выбора
- •Выражения
- •Ввод и вывод
- •Операторы циклов Цикл с предусловием
- •Цикл с постусловием
- •Цикл с параметром
- •Постановка задачи
- •Варианты
- •Методические указания
- •Лабораторная работа № 2 “Работа с одномерными массивами”
- •Краткие теоретические сведения
- •Определение массива
- •Инициализация массива
- •Указатели и массивы
- •Формирование динамических массивов с использованием операций new и delete
- •Варианты заданий
- •Методические указания
- •Лабораторная работа № 3 “Строки”
- •Краткие теоретические сведения
- •Работа со строками
- •Потоковый ввод-вывод
- •Открытие и закрытие потока
- •Постановка задачи
- •Варианты
- •Лабораторная работа №4 “Функции и массивы”
- •Краткие теоретические сведения
- •Функции
- •Массивы и строки как параметры функций
- •Постановка задачи
- •Варианты
- •Краткие теоретические сведения
- •Перегрузка функции
- •Функции с переменным количеством параметров
- •Постановка задачи
- •Варианты
- •Лабораторная работа №6 “Работа со структурами”
- •Краткие теоретические сведения
- •Блоковый ввод-вывод
- •Постановка задачи
- •Варианты
- •Методические указания
- •Лабораторная работа № 7 “Информационные динамические структуры”
- •Краткие теоретические сведения
- •Постановка задачи
- •Порядок выполнения работы
- •Варианты заданий
- •Содержание отчета
- •Постановка задачи.
- •Библиографический список
Методические указания
При выполнении работы используются динамические массивы. Определяются сами массивы, затем пользователь вводит реальную длину массива и работает с массивом той длины, которую он сам указал.
При уменьшении или увеличении длины массива необходимо создавать новый массив нужной длины, и заполнять его элементами старого массива.
Лабораторная работа № 3 “Строки”
Цель: Изучение символьных и строковых переменных и способов их обработки в языке Си.
Краткие теоретические сведения
Для представления символьной (текстовой) информации можно использовать символы, символьные переменные и символьные константы.
Символьная константа представляется последовательностью символов, заключенной в кавычки: “Начало строки \n”. В C/C++ нет отдельного типа для строк. Массив символов - это и есть строка. Количества элементов в таком массиве на один элемент больше, чем изображение строки, т. к. в конец строки добавлен ‘\0’ (нулевой байт или нуль-терминатор).
Работа со строками
Присвоить значение массиву символов с помощью обычного оператора присваивания нельзя. Поместить строку в массив можно либо при вводе, либо с помощью инициализации:
char s[] = “ABCDEF”;
Функция scanf() может использоваться для чтения строк из потока ввода, для чего надо указать спецификатор формата %s ‑ который заставляет функцию scanf() читать символы, пока не встретится специальный символ. Прочитанные символы помещаются в массив символов, на который указывает соответствующий аргумент, и результат завершается нулевым символом. Применительно к scanf() специальные символы ‑ это пробел, новая строка, табуляция, вертикальная табуляция или перевод формата. Функция scanf() читает строку до первого специального символа. Это означает, что нельзя использовать scanf() для чтения строки типа «this is a test», поскольку первый пробел завершит процесс ввода. Поэтому рекомендуется использовать специальные функции для чтения строк из консоли ‑ gets(), которая читает строку, пока не встретится возврат каретки.
Функция gets() читает строку символов, введенных с клавиатуры и помещает их по адресу, указанному в аргументе. Можно набирать символы, пока не будет нажат ввод. Символ, соответствующий клавише ввод - возврат каретки, - не станет частью строки. Вместо этого в конце строки появится нулевой символ, и gets() закончит работу. Функция gets() возвращает указатель на str. Прмер использования команды gets(0):
char str[80];
gets(str);
Для вывода строки на консоль можно использовать функции printf() и puts. Для использования функции printf необходимо указывать спецификатор формата %s. Функция puts() выводит передаваемый ей аргумент на экран, завершая вывод переходом на новую строку. Примеры использования этих функций:
printf ("Here's your string: %s", str);
puts(str);
Для работы со строками существует специальная библиотека string.h. Примеры функций для работы со строками из библиотеки string.h:
Функция |
Прототип и краткое описание функции |
strcmp |
int strcmp(const char *str1, const char *str2); Сравнивает строки str1 и str2. Если str1< str2, то результат отрицательный, если str1 = str2, то результат равен 0, если str1> str2, то результат положительный. |
strcpy |
char* strcpy(char*s1, const char *s2); Копирует байты из строки s1 в строку s2 |
strdup |
char *strdup (const char *str); Выделяет память и перености в нее копию строки str. |
strlen |
unsigned strlen (const char *str); Вычисляет длину строки str. |
strncat |
char *strncat(char *s1, const char *s2, int kol); Приписывает kol символов строки s1 к строке s2. |
strncpy |
char *strncpy(char *s1, const char *s2, int kol); Копирует kol символов строки s1 в строку s2. |
strnset |
char *strnset(char *str, int c, int kol); Заменяет первые kol символов строки s1 символом с. |
Строки, при передаче в функцию, в качестве фактических параметров могут быть определены либо как одномерные массивы типа char[], либо как указатели типа char*. В отличие от обычных массивов в этом случае нет необходимости явно указывать длину строки.
