Лабораторная работа №5. Строки
Цель работы:Приобретение навыков программирования при решении задач обработки текстов.
Отчет на лабораторную работу должен содержать:
- задание по варианту;
- листинг программы, записанного по правилам языка Си/Си++ (все значения для вычисления ввести с клавиатуры.);
- составить блок-схему данного алгоритма;
- скриншот результата программы.
5.1 Варианты заданий
1. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина L кратна 2, то удаляются все числа, которые делятся на 2.
2. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина L четная, то удаляются 2 первых и 2 последних символа.
3. Выяснить, имеются ли среди символов S1...Sn некоторой строки все буквы, входящие в слово DOS.
4. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина L нечетная, то удаляется символ, стоящий посередине строки.
5. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Составить программу для замены в строке длиной К символов каждого второго символа ! на $.
6. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Составить программу для замены в строке длиной К символов всех пробелов на символ $.
7. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина L>10, то удаляются все цифры.
8. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина L кратна 3, то удаляются все числа, делящиеся на 3.
9. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина L кратна 5, то подсчитывается количество скобок всех видов.
10. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина L кратна 4, то первая часть строки меняется местами со второй.
11. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина L=10, то удаляются все A...Z.
12. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина
L >15, то удаляются все a…z.
13. В строке символов поменять местами символы на четных и нечетных позициях.
14. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина
L >6, то выделяется подстрока в { } скобках.
15. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L и, если длина
5.2 Методические указания к выполнению лабораторной работы
Строка – это массив, элементы которого являются символы.
Основные действия над строками и символами реализуются с помощью описываемых ниже стандартных функций:
- size_t strlen (const char *s) — возвращает длину в байтах строки s, не включая '\0'.
- char * strcat (char *dest, const char *src) — присоединяет строку src в конец строки dest.
- char * strcpy (char *dest, const char *src) — копирует строку src в место памяти, на которое указывает dest.
- char * strncat (char *dest, const char *src, size_t maxlen) — присоединяет maxlen символов строки src в конец строки dest.
- char * strncpy (char *dest, const char *src, size_t maxlen) — копирует maxlen первых символов строки src в место памяти, на которое указывает dest.
- char * strstr (char *sl, const char *s2) — отыскивает первое вхождение строки s2 в строку si.
- int strcmp (const char *sl, const char *s2) — сравнивает две строки в лексикографическом порядке с учетом различия прописных и строчных букв; возвращает значение меньше нуля, если si располагается в упорядоченном по алфавиту порядке раньше, чем s2, и больше нуля, если наоборот. Функция возвращает нуль, если строки идентичны.
- char * stricmp (const char *sl, const char *s2) — аналогична strcmp, только не различает прописные и строчные буквы.
Пример
В программе значение строки формируется с клавиатуры, а затем введенная строка распечатывается в обратном порядке.
#include <stdio.h>
#include <string.h>
#include <conio.h>
void main(void)
{
char s[100]; // обьявление символьного массива
int i, k;
clrscr();
puts(" Введите исходную строку");
gets(s);
k=strlen(s);
puts(" ... РЕЗУЛЬТАТЫ РАБОТЫ ПРОГРАММЫ ......\n");
for (i=k; i>=0; i--)
printf("%c",s[i]);
/* вывод элементов массива в обратном порядке */
printf("\n Press any key...");
getch();
}
Контрольные вопросы:
1. Что означает нуль-терминатор?
2. Какими переменными инициализируются строки?
3. Как инициализируются строки?
4. Как обратиться к элементу строки?
5. Как происходит подключение стандартных библиотек.
6. Что такое строка?
7. Чем отличие стоки от одномерных массивов?
8. Какая стандартная библиотека отвечает для работы со строками?