Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_раб С++_ОСНОВЫ ПРОГРАММИРОВАНИЯ_ч_2_изм_чис...doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
803.84 Кб
Скачать

4.Задание

4.1.Создайте программу «Перечисления» (листинг 3.68):

Листинг 3.68. Программа «Перечисления»

В разделе описаний этой программы описаны перечисления дней недели.

Перечислениям присвоено имя Days. В программе вводится текущий день недели в виде цифры. Далее рассчитывается сколько дней недели осталось до конца недели и выводится на печать начальный и текущий день недели и сколько дней осталось до конца недели.

4.2.В отчете к данной лабораторной работе опишите назначение каждого оператора для программы, которая приведена в задании, а также структурную схему (блок-схему) программы «Перечисления».

Лабораторная работа №10 Строки символов

1.Цель работы

Целью работы является изучение возможностей работы со строками символов.

2.Контрольные вопросы

2.1.Дайте определение символьной константе?

2.2.Какая последовательность символов используется для перевода курсора на новую строку?

2.3.Какой из двух типов (С-строки или строковый тип string) наиболее удобен для описания строк?

2.4.Какая функция используется для расчета длины строки?

3.Методические указания

3.1.Данные типа char

Для хранения одного символа C++ имеет отдельный тип char. Символьной константой называется символ, заключенный в оди­ночные кавычки, например (Листинг 3.69):

Листинг 3.69. Определение символьных переменных

Несколько символов имеют специальное значение, они записываются с помощью символа обратной косой черты \ (Листинг 3.69). Ниже приведена таблица специальных символов (Таблица 3.7):

Последова­тельность

символов

Код(16 с/с)

Выполняемое действие

0x07

При выводе вызывает звуковой сигнал

\b

0x08

Вызывает сдвиг позиции курсора влево

\f

0х0С

При выводе на принтер вызывает прогон листа

\n

0х0А

Перевод на новую строку

\r

0x0D

Перевод курсора в начало строки (не переводит строку)

\t

0x09

Горизонтальная табуляция

\v

0x0В

Вертикальная табуляция

\\

0х5С

Символ обратной косой черты

\’

0x27

Символ одиночной кавычки

\”

0x22

Символ двойной кавычки

\ ?

0x3F

Знак вопроса

Таблица 3.7. Специальные символы

С-строки

В "наследство" от языка С языку C++ достались С-строки - они представлены как массивы элементов типа char, в конце которого размещен символ ‘\0’ (нуль-терминатор). Такие строки еще называют

строками в формате ASCIIZ или просто ASCIIZ-cmpoкой. Как и с

любым массивом символов, с С-строкой связан указатель-константа на первый элемент массива. Строковые литералы заключаются и двойные кавычки, в которые можно вставлять специальные символы. Например, ниже представлены

идентичные строки кода (Листинг 3.70):

Листинг 3.70. Различное представление одной и той же строки

Т.к. С-строка - это всего лишь массив, то и обращаться с ней надо как с массивом элементов. При ее инициализации строкой, нуль-терминатор добавляется автоматически, а при посимвольной ини­циализации, нуль-терминатор необходимо указывать дополнитель­но. Например, совершенно идентичными являются следующие описания строк:

Если строка используется для указателя типа char*, адрес первого символа строки будет начальным значением указателя, например:

char* s = "Слово";

Здесь описывается только переменная-указатель s, и она получает начальное значение, равное адресу первого элемента (символ 'С') строки.

Из-за того, что С-строка - массив элементов типа char, вытекают различные неудобства их использования, например, нельзя выпол­нить такую "пересылку" строки символов (Листинг 3.71):

Листинг 3.71. Ошибочное действие над С-строкой

Для операций над С-строками в C++ есть специальная библиотека

функций, для использования которых необходимо включать заголовочный файл cstring, ниже приведены некоторые из них:

char *strcat (char *strDestination, const char *strSource)

добавить строку strSource к строке strDestinalion;

char *strcpy (char *strDestination, const char *strSource)

копирует содержимое строки strSource в строку по указателю

strDestination;

size_t strlen (const char *string) –

возвращает длину строки string;

сравнивает строки string1 и string2. Возвращает:

возвращает указатель на первое вхождение строки strCharSet в строке siring. Если вхождения нет, то функция возвращает 0.

Использовать С-строки надо крайне осторожно - С++- ничего не делает автоматически, отдает все в руки программиста. Так, например, копируя одну строку в другую, Вы должны быть уверены, что хватит места для этой операции (Листинг 3.72):

Листинг 3.72. Типичные ошибки при работе с С-строками

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]