![]() КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Упражнения
Для решения задач разработайте рекурсивные функции 1. Наберите коды программ из Примеров 3-4. Выполните компиляцию и запуск программ. 2. Определите закономерность формирования членов последовательности. Найдите n -ый член последовательности: 1, 1, 2, 3, 5, 8, 13,… 3. Составьте программу вычисления биномиального коэффициента 4. Исполнитель умеет выполнять два действия: «+1», «*2». Составьте программу получения из числа 1 числа 100 за наименьшее количество операций. 5. Найдите наибольший общий делитель двух натуральных чисел с помощью алгоритма Евклида. 6. Дано натуральное число, кратное 3. Получите сумму кубов этого числа, затем сумму кубов получившегося числа и т.д. Проверьте на нескольких примерах, действительно ли в конечном итоге получится 153. 7. Разработайте программу вычисления an натуральной степени n вещественного числа a за наименьшее число операций.
Литература 1. Керниган, Б. Язык программирования Си / Б. Керниган, Д. Ритчи. – М.: Вильямс, 2007. – 304 с. 2. Подбельский, В.В. Практикум по программированию на языке Си: учеб. пособие / В.В. Подбельский. – М.: Финансы и статистика, 2004. – 576 с. 3. Подбельский, В.В. Программирование на языке Си: учеб. пособие / В.В. Подбельский, С.С. Фомин. – М.: Финансы и статистика, 2004. – 600 с. 4. Подбельский, В.В. Язык Си++: учеб. пособие / В.В. Подбельский. – М.: Финансы и статистика, 2005. – 560 с. 5. Романов, Е.Л. Практикум по программированию на языке С++: учеб. пособие / Е.Л. Романов. – СПб: БХВ-Петербург, 2004. – 432 с. 6. С/С++. Структурное программирование: практикум / Т.А. Павловская, Ю.А. Щупак. – СПб: Питер, 2004. – 239 с.
Тесты «Типы данных, перегрузка функций, рекурсия» Задача 1. Вариант 1 Задачи 1. Укажите допустимые присваивания для переменной ch символьного типа. +ch=55; ch=5.5; +ch=’&’; ch=’&&&’; Вариант 2 Задачи 1. Укажите допустимые присваивания для переменной m вещественного типа. m=’f’; +m=.5e-04; +m=float(47)/4; m=5,5;
Вариант 3 Задачи 1. Укажите допустимые присваивания для переменной b логического типа. b=’true’; +b=true; +b=1; +b=5>6; Задача 2. Вариант 1 Задачи 2. Укажите для целого знакового 4-байтного типа преобразования к целевому типу без потери информации: +к плавающему типу к целому беззнаковому 4-байтному типу к символьному типу к целому знаковому 8-байтному типу Вариант 2 Задачи 2. Укажите для плавающего 4-байтного типа преобразования к целевому типу без потери информации: +к плавающему 8-байтному типу к целому беззнаковому 8-байтному типу к целому знаковому 8-байтному типу к целому беззнаковому 4-байтному типу Вариант 3 Задачи 2. Укажите для целого беззнакового 4-байтного типа преобразования к целевому типу без потери информации: +к плавающему типу к целому знаковому 4-байтному типу к логическому типу +к целому беззнаковому 8-байтному типу Задача 3. Вариант 1 Задачи 3. Укажите ситуации, когда функция со спецификатором inline будет трактоваться как обычная не подставляемая функция. всегда используется как подставляемая функция никогда не используется как подставляемая +функция является рекурсивной +вызывается более одного раза в выражении Вариант 2 Задачи 3. Укажите достоинства использования подставляемых функций в программе. +уменьшается время, затрачиваемое на вызов функции уменьшается объем памяти под программный код функция становится доступной в любом программном коде быстрее выполняются рекурсивные вызовы подставляемой функции Вариант 3 Задачи 3. Укажите возможные недостатки использования подставляемых функций в программе. увеличивается время, затрачиваемое на вызов функции +увеличивается объем памяти под программный код функция доступна для подстановки только один раз + компилятор не всегда может выполнить подстановку из-за контекста
Задача 4. Вариант 1 Задачи 4. Укажите, какое значение возвращает функция f(a,b,c), если объявлены int a=3,b=5,c=18; и функция перегружена следующим образом: float f(int a, int b, int c){ return float((a+b+c)/3); } float f(float a, float b, float c){ return a+b+c; } ошибка вызова функции 8.66667 +8 Вариант 2 Задачи 4. Укажите, какое значение возвращает функция g(a,b,c), если объявлены int a=3,b=5,c=18; и функция перегружена следующим образом: float g(int a, int b, int c,int d){ return float(a+b+c)/4; } float g(float a, float b, float c){ return a+b+c; } ошибка вызова функции +26 8.5 Вариант 3 Задачи 4. Укажите, какое значение возвращает функция h(a,b,c), если объявлены int a=3,b=6;float c=4.5; и функция перегружена следующим образом: int h(int a, float b, int c){ return int(a+b+c)/3; } float h(float a, int b, float c){ return a+b+c; } +ошибка вызова функции 13.5 4.5 Задача 5. Вариант 1 Задачи 5. Каково назначение типа void? + используется для определения функций, которые не возвращают значения +указывает о пустом списке аргументов функции указание об ошибке вызова функции +используется в операции приведения типов Вариант 2 Задачи 5. Какой тип имеет переменная перечисляемого типа, который объявлен так: enum year {winter, spring, summer, autumn};? строковый +целочисленный символьный тип void Вариант 3 Задачи 5. Укажите случаи допустимого неявного преобразования типов в выражениях, если выполнено объявление int s;: +s=20/6; s=4.5%8; s=int(48.6/4); +s=48.6/4; Задача 6. Вариант 1 Задачи 6. Что возвращает функция, фрагмент кода которой приведен ниже? int Rec(int n) { if (n<10) return n; return Rec(n/10)+n%10; } количество цифр числа n количество всех делителей числа n +сумму цифр числа n сумму всех делителей числа n Вариант 2 Задачи 6. Что возвращает функция, фрагмент кода которой приведен ниже? long int Rec(int n) { if (n<2) return 1; return Rec(n-1)*n; } произведение цифр числа n количество цифр числа n количество делителей числа n +факториал числа n Вариант 3 Задачи 6. Что возвращает функция, фрагмент кода которой приведен ниже? int Rec(int n, int p) { if (n%p!=0) return 0; return Rec(n/p)+1; } количество цифр числа n, кратных p +p-ичный порядок числа n сумму цифр числа n, кратных p сумму всех делителей числа n, не превосходящих p Задача 7. Вариант 1 Задачи 7. Формирование какой последовательности описывает рекурсивная функция Rec, код которой приведен ниже? int Rec(int n) { if (n<3) return n; return Rec(n-1)*Rec(n-2); } 1, 1, 2, 2, 3, 3, … 1, 2, 3, 4, 5, 6, … +1, 2, 2, 4, 8, 32, … 1, 2, 2, 4, 4, 8, 8, … Вариант 2 Задачи 7. Формирование какой последовательности описывает рекурсивная функция Rec, код которой приведен ниже? int Rec(int n) { if (n<5) return n; return Rec(n-1)+Rec(n%4); } 1, 2, 3, 4, 1, 2, 3, 4, … 1, 2, 3, 4, 6, 8, 10, 12, … 1, 2, 3, 4, 5, 6, 7, 8, … +1, 2, 3, 4, 5, 7, 10, 10, … Вариант 3 Задачи 7. Формирование какой последовательности описывает рекурсивная функция Rec, код которой приведен ниже? int Rec(int n) { if (n<4) return n; return Rec(Rec(n-3)); } +1, 2, 3, 1, 2, 3, 1, 2, 3, … 1, 2, 3, 4, 5, 6, 7, 8, 9,… 1, 2, 3, 3, 2, 1, 1, 2, 3, … 1, 2, 3, 3, 3, 3, 3, 3, 3, … Задача 8. Вариант 1 Задачи 8. Какое значение возвращает рекурсивная функция Rec(8), код которой приведен ниже? int Rec(int n) { if (n<1) return 0; if (n%3==0) return n/3; return Rec(n-1)+Rec(n-2); } +6 Вариант 2 Задачи 8. Какое значение возвращает рекурсивная функция Rec(2,12), код которой приведен ниже? int Rec(int n,int k) { if (k==0) return 1; if (k%2==0) return sqr(Rec(n,k/2)); return n*Rec(n,k-1); } +4096 Вариант 3 Задачи 8. Какое значение возвращает рекурсивная функция Rec(108,72), код которой приведен ниже? int Rec(int n,int k) { if (n%k==0) return k; return Rec(k,n%k); } +36
Дата добавления: 2014-01-07; Просмотров: 2446; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |