Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие С(часть1-3).doc
Скачиваний:
23
Добавлен:
12.02.2015
Размер:
854.02 Кб
Скачать

Задание 17. Рекурсивные функции

  1. Записать алгоритм Евклида вычисления наибольшего общего делителя (НОД) как рекурсивную функцию. Алгоритм основан на том факте, что если a=qb+r, где 0<r<b, то HOD(a,b)=HOD(b,r). В процессе вычислений выводить на экран текущие выражение a=qb+r в численном виде, то есть 37=2*17+3, 17=5*3+2 и т.д. В конце вывести НОD.

  2. Записать алгоритм, проверящий является ли заданное число простым как рекурсивную функцию. Вывести на экран все простые числа, не превосходящих n.

  3. Записать алгоритм разложения произвольного числа на простые множители как рекурсивную функцию с выводом на экран сомножителей.

  4. Записать алгоритм нахождения канторового разложения произвольного числа а – векторав виде рекурсивной функции. Канторовым разложением положительного числаа называется запись вида: ,.

  5. Определить рекурсивную функцию, которая возвращает факториал целого неотрицательного числа. Написать программу, вычисляющую по заданнымa и b.

  6. Определить рекурсивную функцию, вычисляющую число сочетаний , используя соотношение.

  7. Определить рекурсивную функцию, которая возвращает n–ое число Фибоначчи. Числа Фибоначчи вычисляются следующим образом: .

  8. Определить рекурсивную функцию, которая вычисляет сумму цифр натурального числа.

  9. Определить рекурсивную функцию, выводящую на экран цифры целого положительного числа.

  10. Определить рекурсивную функцию, которая находит корень уравнения f(x)=0 на заданном интервале [a,b] c заданной точностью . Корень ищется методом деления отрезка пополам по следующему алгоритму. Первоначально предполагается, что f(a)f(b)<0.

    1. вычисляются f(а), f(b);

    2. вычисляется c=(a+b)/2 и f(c);

    3. если f(a)f(c)>0, то а=c, в противном случае b=c;

    4. если b–a>, то перейти к шагу 2, иначе любой из концов отрезка может быть использован в качестве корня уравнения.

  11. Определить рекурсивную функцию, выводящее в экран двоичное представление заданного десятичного числа.

  12. Определить рекурсивную функцию, возвращающую максимальное из n чисел.

Задание 18. Использование библиотечных функций string.H

  1. Дана текстовая строка. Вывести на печать все ее слова в таком порядке: все однобуквенные, потом все двухбуквенные, потом все трехбуквенные и т.д. до слова максимальной длины, используя функции strtok, strlen.

  2. Даны текстовая строка и слово (например, ba). Напечатать все слова, входящие в эту текстовую строку, начинающиеся с букв заданного слова (например, bak, barber, baab, baalam), используя функции strtok, strlen, strnicmp.

  3. Дана текстовая строка. Сформировать строку, состоящую из последних букв слов заданной текстовой строки, используя функции strtok, strlen и вывести ее на экран. Например, если задана строка adcd ef ghi jklmn, то на экран должно быть выведено слово dfin.

  4. Даны текстовая строка и слово (например, ab). Напечатать все слова, входящие в эту текстовую строку, заканчивающиеся на буквы заданного слова (например, abcdab, ab, kab), используя функции strtok, strlen, strcmp.

  5. Даны текстовая строка и слово. Определить, какие слова из этой текстовой строки предшествуют заданному слову в лексикографическом порядке, используя функции strtok, strcmp.

  6. Дан набор слов и произвольная текстовая строка. Выбрать из текстовой строки все слова, входящие в данный набор и вывести их на печать, используя функции strtok, strcmp.

  7. Дана текстовая строка. Определить, упорядочены ли ее слова по алфавиту, указать первое слово, нарушающее порядок, используя функции strtok, strcmp.

  8. Из заданной текстовой строки распечатать только те слова, которые начинаются и оканчиваются одной и тоже буквой, используя функции strtok, strlen.

  9. Из заданной строки, распечатать все слова без повторений, используя функции strtok, strcmp.

  10. Дана текстовая строка. Сформировать строку, состоящую из третьих букв каждого слова заданной текстовой строки, используя функции strtok, strlen, и вывести ее на экран. Например, если задана строка adcd ef ghi jklmno, то на экран должно быть выведено слово сil.

  11. Дана текстовая строка. Распечатать строку, состоящую из слов заданной, расположенных в лексикографическом порядке, используя функции strtok, strlen, strnicmp.

  12. Дана текстовая строка. Распечатать из нее все слова, имеющие наименьшую и наибольшую длину, используя функции strtok, strlen.