Читайте также:
|
|
Рекурсивными называются процедуры и функции, которые вызывают сами себя. Функцию вычисления факториала можно записать так:
int factorial (int n)
{
if (n<=0) return 1; // рекурсия закончилась
else return n*factorial(n-1); //рекурсивный вызов
}
Функция factorial вызывает сама себя, если n>0.
Обычно, в программировании под рекурсией понимают такую реализацию, в которой подпрограмма использует в своем теле вызов самой себя. Такие вызовы называют рекурсивными. Когда функция А в своем теле вызывает только одну рекурсивную функцию (саму себя), то говорят о простой рекурсии. Под косвенной рекурсией понимают явление, когда рекурсивные функции вызывают друг друга (например, функция А вызывает В, а функция В вызывает А).
Прямая рекурсия:
void A() {
операторы;
A();
oператоры;
}
Косвенная рекурсия:
void A() {
операторы;
В();
oператоры;
}
void В() {
операторы;
A();
oператоры;
}
При реализации рекурсивных алгоритмов необходимо уделять внимание тому, чтобы алгоритм был конечным, т.е. выполнение рекурсивной функции должно когда-нибудь завершиться.
46. Функции для работы со строками: сравнение, копирование.
Строка представляет собой массив символьных переменных, заканчивающийся специальным нулевым символом. В языке С признаком окончания строки служит символ '/0'. Т.о. строка содержит символы, составляющую строку, а также нулевой символ.
Объявляя массив символов, предназначенный для хранения строки, необходимо предусмотреть место для нуля, т.е. указать его размер в объявлении на один символ больше, чем наибольшее предполагаемое количество символов. Например, объявление массива str, предназначенного для хранения строки из 10 символов, должно выглядеть так:
char str[11];
Последний, 11-ый байт предназначен для нулевого символа.
Записанная в тексте программы строка символов, заключенных в двойные кавычки, является строковой константой, например, «некоторая строка».
В конец строковой константы компилятор автоматически добавляет нулевой символ.
Для обработки строк в С определено много различных библиотечных функций.
Имя функции strcpy(s1, s2) – копирование s2 в s1.
Имя функции strcmp(s1,s2) возвращает 0, если s1 и s2 совпадают, отрицательное значение, если s1<s2 и положительное значение, если s1>s2.
Следует помнить, что strcmp() принимает значении ЛОЖЬ, если строки совпадают.
Эти функции объявлены в заголовочном файле <string.h>.
47. Функции для работы со строками: поиск в строке.
Строка представляет собой массив символьных переменных, заканчивающийся специальным нулевым символом. В языке С признаком окончания строки служит символ '/0'. Т.о. строка содержит символы, составляющую строку, а также нулевой символ.
Объявляя массив символов, предназначенный для хранения строки, необходимо предусмотреть место для нуля, т.е. указать его размер в объявлении на один символ больше, чем наибольшее предполагаемое количество символов. Например, объявление массива str, предназначенного для хранения строки из 10 символов, должно выглядеть так:
char str[11];
Последний, 11-ый байт предназначен для нулевого символа.
Записанная в тексте программы строка символов, заключенных в двойные кавычки, является строковой константой, например, «некоторая строка».
В конец строковой константы компилятор автоматически добавляет нулевой символ.
strchr
char *strchr(const char *str, int c);
ищет в строке str первое вхождение символа с. Возвращает NULL, если символ в строке отсутствует.
strrchr
char *strrchr (const char *str, int c);
ищет в строке str последнее вхождение символа с. Возвращает NULL, если символ в строке отсутствует.
strstr
char *strstr (const char *str1, const char *str2);
ищет в строке str1 подстроку str2. Возвращает указатель на тот элемент в строке str1, с которого начинается подстрока str2., или NULL, если подстрока str2 в строке str1 отсутствует.
strpbrk
char *strpbrk(const char *str1, const char *str2);
ищет в строке str1 первое вхождение любого символа из строки str2. Возвращает NULL, если такой символ в строке отсутствует.
strtok
char *strtok(char *str1, const char *str2);
ищет в строке str1 лексемы, выделенные символами из второй строки str2.
48. Функции для работы со строками: преобразование форматов.
Строка представляет собой массив символьных переменных, заканчивающийся специальным нулевым символом. В языке С признаком окончания строки служит символ '/0'. Т.о. строка содержит символы, составляющую строку, а также нулевой символ.
Объявляя массив символов, предназначенный для хранения строки, необходимо предусмотреть место для нуля, т.е. указать его размер в объявлении на один символ больше, чем наибольшее предполагаемое количество символов. Например, объявление массива str, предназначенного для хранения строки из 10 символов, должно выглядеть так:
char str[11];
Последний, 11-ый байт предназначен для нулевого символа.
Записанная в тексте программы строка символов, заключенных в двойные кавычки, является строковой константой, например, «некоторая строка».
В конец строковой константы компилятор автоматически добавляет нулевой символ.
str1wr
char *str1wr(const char *str);
преобразует буквы верхнего регистра в строке в соответствующие буквы нижнего регистра.
strupr
char *strupr(const char *str);
преобразует буквы нижнего регистра в строке в соответствующие буквы верхнего регистра.
Дата добавления: 2015-02-16; просмотров: 95 | Поможем написать вашу работу | Нарушение авторских прав |