- •1.1. Структура программы
- •1.2. Константы и переменные
- •1.3. Операции
- •1.4. Выражения
- •1.5. Ввод и вывод
- •1.5.1. Ввод и вывод в стандартном Си
- •2. Постановка задачи
- •3. Варианты
- •4. Методические указания
- •5. Содержание отчета
- •Лабораторная работа №2. "Использование основных операторов языка Си"
- •Краткие теоретические сведения
- •Составные операторы
- •Операторы выбора
- •Операторы циклов
- •Операторы перехода
- •2. Постановка задачи
- •3. Варианты
- •3. Содержание отчета
- •4. Методические указания
- •Лабораторная работа №3 "Вычисление функций с использованием их разложения в степенной ряд"
- •1. Краткие теоретические сведения
- •2. Постановка задачи
- •3. Варианты
- •4. Методические указания
- •5. Содержание отчета
- •Лабораторная работа № 4 "Работа с одномерными массивами"
- •Краткие теоретические сведения
- •1.1. Определение массива
- •1.2. Инициализация массива
- •1.3. Указатели
- •1.4. Указатели и массивы
- •2. Варианты заданий
- •3. Методические указания
- •4. Содержание отчета
- •Лабораторная работа №5 "Функции и массивы"
- •Краткие теоретические сведения
- •1.1. Функции
- •1.2. Массивы и строки как параметры функций
- •2. Постановка задачи
- •3. Варианты
- •4. Содержание отчета
- •Лабораторная работа № 6 "Строки"
- •1. Краткие теоретические сведения
- •2. Постановка задачи
- •3. Варианты
- •4. Содержание отчета
- •1. Краткие теоретические сведения
- •2. Постановка задачи
- •3. Варианты
- •4. Содержание отчета
- •7.2. "Функции с переменным числом параметров"
- •1. Краткие теоретические сведения
- •2. Постановка задачи
- •3. Варианты
- •4. Содержание отчета
- •Лабораторная работа №8 "Блоковый ввод-вывод"
- •1. Краткие теоретические сведения
- •1. 1. Ввод и вывод в Си
- •1.2. Потоковый ввод-вывод
- •1.3. Открытие и закрытие потока
- •Блоковый ввод-вывод
- •2. Постановка задачи
- •3. Варианты
- •4. Методические указания
- •5. Содержание отчета
- •Лабораторная работа № 9 "Строковый ввод-вывод"
- •Краткие теоретические сведения
- •2. Постановка задачи
- •3. Варианты
- •4. Содержание отчета
- •Лабораторная работа № 10 "Динамические массивы"
- •Краткие теоретические сведения
- •Формирование динамических массивов с использованием библиотечных функций
- •Формирование динамических массивов с использованием операций new и delete
- •2. Постановка задачи
- •3. Порядок выполнения работы
- •4. Варианты заданий
- •5. Содержание отчета
- •Лабораторная работа № 11 "Информационные динамические структуры"
- •Краткие теоретические сведения
- •2. Постановка задачи
- •Порядок выполнения работы
- •4. Варианты заданий
- •5.Содержание отчета
- •Библиографический список
- •Оглавление
- •7.2. "Функции с переменным числом параметров" 40
4. Содержание отчета
Постановка задачи.
Вариант задания
Текст программы.
Результат решения конкретного варианта.
Лабораторная работа № 6 "Строки"
Цель: Изучение символьных и строковых переменных и способов их обработки в языке Си.
1. Краткие теоретические сведения
Для представления символьной (текстовой) информации можно использовать символы, символьные переменные и символьные константы.
Символьная константа представляется последовательностью символов, заключенной в кавычки: “Начало строки \n”. В Си нет отдельного типа для строк. Массив символов - это и есть строка. Количества элементов в таком массиве на один элемент больше, чем изображение строки, т. к. в конец строки добавлен ‘\0’ (нулевой байт или нуль-терминатор).
А А \0
‘A’ “A”
символ(1 байт) строка (2 байта)
Присвоить значение массиву символов с помощью обычного оператора присваивания нельзя. Поместить строку в массив можно либо при вводе, либо с помощью инициализации:
char s[] = “ABCDEF”;
Для работы со строками существует специальная библиотека 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*. В отличие от обычных массивов в этом случае нет необходимости явно указывать длину строки.
2. Постановка задачи
Задана строка, состоящая из символов. Символы объединяются в слова. Слова друг от друга отделяются одним или несколькими пробелами. В конце текста ставится точка. Текст содержит не более 255 символов. Выполнить ввод строки, используя функцию Gets(s) и обработку строки в соответствии со своим вариантом.
3. Варианты
Проверить является ли строка палиндромом. (Палиндром - это выражение, которое читается одинакова слева направо и справа налево).
Напечатать самое длинное и самое короткое слово в этой строке.
Напечатать все слова, которые не содержат гласных букв.
Напечатать все слова, которые содержат по одной цифре.
Напечатать все слова, которые совпадают с ее первым словом.
Преобразовать строку таким образом, чтобы сначала в ней были напечатаны только буквы, а потом только цифры, не меняя порядка следования символов в строке.
Преобразовать строку так, чтобы все буквы в ней были отсортированы по возрастанию.
Преобразовать строку так, чтобы все цифры в ней были отсортированы по убыванию.
Преобразовать строку так, чтобы все слова в ней стали идентификаторами, слова состоящие только из цифр - удалить.
Напечатать все слова-палиндромы, которые есть в этой строке(см 1 вариант).
Преобразовать строку таким образом, чтобы в ее начале были записаны слова, содержащие только цифры, потом слова, содержащие только буквы, а затем слова, которые содержат и буквы и цифры.
Преобразовать строку таким образом, чтобы все слова в ней были напечатаны наоборот.
Преобразовать строку таким образом, чтобы буквы каждого слова в ней были отсортированы по возрастанию.
Преобразовать строку таким образом, чтобы цифры каждого слова в ней были отсортированы по убыванию.
Преобразовать строку таким образом, чтобы в ней остались только слова, содержащие буквы и цифры, остальные слова удалить.
Определить какое слово встречается в строке чаще всего.
Определить какие слова встречаются в строке по одному разу.
Все слова строки, которые начинаются с буквы, отсортировать в алфавитном порядке.
Все слова строки, которые начинаются с цифры отсортировать по убыванию.
Удалить из строки все слова, которые не являются идентификаторами.
В. В. Подбельский, С. С. Фомин, «Программирование на языке СИ» стр. 507, Вариант 5.
В. В. Подбельский, С. С. Фомин, «Программирование на языке СИ» стр. 514, Вариант 20.
В. В. Подбельский, С. С. Фомин, «Программирование на языке СИ» стр. 515, Вариант 21.
В. В. Подбельский, С. С. Фомин, «Программирование на языке СИ» стр. 516, Вариант 23.
В. В. Подбельский, С. С. Фомин, «Программирование на языке СИ» стр. 518, Вариант 27.