Главная / Программирование /
Классические алгоритмы и игры на C# для школьников / Тест 5
Классические алгоритмы и игры на C# для школьников - тест 5
Упражнение 1:
Номер 1
В игре "Отгадай задуманное число" компьютер случайным образом "задумывает" число из некоторого интервала [min, max]
. Игрок при поиске задуманного числа применяет стратегию "случайного поиска", в которой он также случайным образом выбирает число из этого же интервала и спрашивает компьютер равно ли его число задуманному. Какие утверждения справедливы относительно стратегии случайного поиска, применяемой игроком?
Ответ:
 (1) Существует вероятность того, что число будет отгадано за один вопрос; 
 (2) Существует вероятность того, что независимо от интервала число не будет отгадано за 100 вопросов; 
 (3) Число обязательно будет отгадано за N
вопросов, где N
– число чисел в интервале [min, max]
. 
Номер 2
В игре "Отгадай задуманное число" компьютер случайным образом "задумывает" число из некоторого интервала [min, max]
. Игрок при поиске задуманного числа применяет стратегию линейного поиска, в которой он последовательно перебирает все числа, начиная от min
и кончая числом max
, каждый раз спрашивая компьютер равно ли его число задуманному. Перебор прекращается, когда найдено задуманное число. Какие утверждения справедливы относительно стратегии линейного поиска, применяемой игроком?
Ответ:
 (1) Существует вероятность того, что число будет отгадано за один вопрос; 
 (2) Существует вероятность того, что независимо от интервала число не будет отгадано за 100 вопросов; 
 (3) Число обязательно будет отгадано за N
вопросов, где N
– число чисел в интервале [min, max]
. 
Номер 3
В игре "Отгадай задуманное число" компьютер случайным образом "задумывает" число из некоторого интервала [min, max]
. Игрок при поиске задуманного числа применяет стратегию "бинарного поиска". Пока интервал не сократится до одного числа, он задает вопрос "больше ли задуманное число числа mid
, представляющего середину интервала". Какие утверждения справедливы относительно стратегии бинарного поиска, применяемой игроком?
Ответ:
 (1) Существует вероятность того, что независимо от интервала число не будет отгадано за 100 вопросов; 
 (2) Число будет отгадано ровно за N
вопросов, где N
– число чисел в интервале [min, max]
; 
 (3) Число будет отгадано за Log(N)
+ 1 вопросов, где N
– число чисел в интервале [min, max]
, а Log(N)
– двоичный логарифм числа N
, округленный в большую сторону до ближайшего целого. 
Упражнение 2:
Номер 1
В программе объявлена и инициализирована переменная rnd
класса Random
. Какие вызовы методов этого класса являются корректными?
Ответ:
 (1) rnd.Next()
; 
 (2) rnd.Next(1)
 
 (3) rnd.Next (-10, 10)
; 
 (4) rnd.Next(20, 10)
. 
Номер 2
Класс Random
позволяет получать случайные (псевдослучайные) числа в заданном интервале. Какой из методов этого класса позволяет получать случайные вещественные числа, равномерно распределенные в заданном интервале?
Ответ:
 (1) Конструктор класса; 
 (2) Метод Next
; 
 (3) Метод NextDouble
; 
 (4) Метод NextBytes
. 
Номер 3
Класс Random
позволяет получать случайные (псевдослучайные) числа в заданном интервале. Какой из методов этого класса позволяет получать случайные целые числа, равномерно распределенные в заданном интервале?
Ответ:
 (1) Конструктор класса; 
 (2) Метод Next
; 
 (3) Метод NextDouble
; 
 (4) Метод NextBytes
. 
Упражнение 3:
Номер 1
Какие утверждения справедливы для метода бинарного поиска?
Ответ:
 (1) Является наиболее эффективным методом поиска в множестве, где все элементы упорядочены, то есть следующий элемент больше предыдущего; 
 (2) Является наиболее эффективным методом поиска как в упорядоченном, так и в неупорядоченном множестве; 
 (3) Для неупорядоченного множества применение метода, как правило, дает неверный ответ. 
Номер 2
В программе объявлена и инициализирована переменная rnd
класса Random
. Какие вызовы методов этого класса являются корректными?
Ответ:
 (1) rnd.NextDouble()
; 
 (2) rnd.NextDouble(1)
 
 (3) rnd.NextDouble (-10, 10)
; 
 (4) rnd.NextDouble(20, 10)
. 
Номер 3
Какие утверждения справедливы для генерирования случайных чисел типа double?
:
Ответ:
 (1) Метод NextDouble
позволяет генерировать числа в диапазоне от 0.0 до 1.0; 
 (2) Метод NextDouble
позволяет генерировать числа в диапазоне [min, max]
; 
 (3) Число, сгенерированное методом NextDouble
, всегда можно привести к интервалу [min, max]
. 
Упражнение 4:
Номер 1
Компьютер задумал число в интервале от 82 до 320. Какое минимальное число вопросов (больше, меньше, равно) нужно задать в игре с компьютером, чтобы гарантировано найти задуманное число и получить ответ "да"?
Ответ:
 (1) 9; 
 (2) 10; 
 (3) 11; 
 (4) 12. 
Номер 2
Компьютер задумал число в интервале от 32 до 50. Какое минимальное число вопросов (больше, меньше, равно) нужно задать в игре с компьютером, чтобы гарантировано найти задуманное число и получить ответ "да"?
Ответ:
 (1) 1; 
 (2) 2; 
 (3) 3. 
 (4) 5. 
 (5) 6. 
Номер 3
Компьютер задумал число в интервале от 100 до 1000. Какое минимальное число вопросов (больше, меньше, равно) нужно задать в игре с компьютером, чтобы гарантировано найти задуманное число и получить ответ "да"?
Ответ:
 (1) 1; 
 (2) 10; 
 (3) 11. 
 (4) 900. 
Упражнение 5:
Номер 1
При создании переменной rnd
класса Random
можно вызвать конструктор с параметром или без параметров, например,
Random rnd
= new Random(10), rnd1
= new Random(
);
Какие утверждения справедливы для вызова конструктора без параметров?
Ответ:
 (1) При каждом запуске программы позволяет генерировать новую последовательность случайных чисел; 
 (2) У конструктора без параметров начальное значение генерируемой последовательности определяется текущей датой и текущим временем компьютера в момент вызова конструктора; 
 (3) Вызов конструктора без параметров позволяет генерировать одну и ту же последовательность случайных чисел при каждом запуске программы; 
 (4) У конструктора без параметров начальное значение генерируемой последовательности всегда фиксировано. 
Номер 2
При создании переменной rnd
класса Random
можно вызвать конструктор с параметром или без параметров, например,
Random rnd
= new Random(100), rnd1
= new Random(
);
Какие утверждения справедливы?
Ответ:
 (1) При каждом запуске программы последовательность случайных чисел, генерируемая переменной rnd
, будет одна и та же; 
 (2) При каждом запуске программы последовательность случайных чисел, генерируемая переменной rnd1
, будет одна и та же; 
 (3) При каждом запуске программы последовательность случайных чисел, генерируемая переменной rnd
, будет разная; 
 (4) При каждом запуске программы последовательность случайных чисел, генерируемая переменной rnd1
, будет разная. 
Номер 3
Переменные rnd
и rnd1
класса Random
были созданы конструктором с параметром следующим образом:
Random rnd = new Random(100), rnd1 = new Random(200);
Какие утверждения справедливы?
Ответ:
 (1) При каждом запуске программы последовательность случайных чисел, генерируемая переменной rnd
, будет одна и та же; 
 (2) Последовательности случайных чисел, генерируемые переменными rnd
и rnd1
, будут совпадать; 
 (3) Последовательности случайных чисел, генерируемые переменными rnd
и rnd1
, будут различаться; 
 (4) Последовательность случайных чисел, генерируемая переменной rnd1
, будет начинаться числом 200. 
Упражнение 6:
Номер 1
Какие утверждения справедливы при игре "Быки и коровы"?
Ответ:
 (1) В этой игре нет очевидной эффективной стратегии поиска, аналогичной стратегии бинарного поиска для предыдущей игры, где разрешается задавать вопросы "больше", "меньше"; 
 (2) Придумать для компьютера алгоритм поиска задуманного числа, который бы играл лучше, чем человек, например, побеждал бы в матче из 100 партий, еще не решенная задача. 
 (3) Человек всегда побеждает компьютер в этой игре; 
 (4) Компьютер всегда побеждает человека в этой игре. 
Номер 2
Какие утверждения справедливы при игре "Быки и коровы"?
Ответ:
 (1) Правильный ответ нельзя получить за один вопрос; 
 (2) Метод бинарного поиска не применим в этой игре; 
 (3) Гарантировано правильный ответ можно получить за Log(N)
+ 1 вопрос, где N
– это количество чисел в интервале [min, max]
, а Log(N)
– двоичный логарифм числа N
, округленный в большую сторону до ближайшего целого; 
 (4) Применение логических рассуждений позволяет человеку находить задуманное число быстрее, чем за N
вопросов. 
Номер 3
Какие утверждения справедливы при игре "Быки и коровы"?
Ответ:
 (1) Правильный ответ может быть получен за один вопрос. 
 (2) Наилучшей стратегией поиска задуманного числа является метод бинарного поиска. 
 (3) Гарантировано правильный ответ можно получить за N
вопросов, где N
– это количество чисел в интервале [min, max]
. 
 (4) Применение логических рассуждений позволяет человеку находить задуманное число быстрее, чем за N
вопросов. 
Упражнение 7:
Номер 1
В игре "Быки и коровы" компьютер задумал трехзначное число из интервала [100, 999]. Ответ компьютера на число 123 был следующим: "один бык, ноль коров? Сколько минимум вопросов достаточно задать, чтобы понять, какая из трех цифр присутствует в задуманном числе и на каком она стоит месте?
Ответ:
 (1) 1. 
 (2) 2. 
 (3) 3. 
 (4) 4. 
Номер 2
В игре "Быки и коровы" компьютер задумал трехзначное число из интервала [100, 999]. Ответ компьютера на число 123 был следующим: "ноль быков, одна корова". Какие выводы можно сделать на основании этих ответов?
Ответ:
 (1) Если в задуманном числе есть цифра 1, то она стоит на втором или на третьем месте; 
 (2) Если в задуманном числе есть цифра 2, то она стоит на первом или на третьем месте; 
 (3) Если в задуманном числе есть цифра 3, то она стоит на третьем месте; 
 (4) Если в задуманном числе есть цифра 3, то она стоит на первом месте; 
 (5) Если в задуманном числе есть цифра 3, то она стоит либо на первом, либо на втором месте. 
Номер 3
В игре "Быки и коровы" компьютер задумал трехзначное число из интервала [100, 999]. Ответ компьютера на число 123 был следующим: "ноль быков, одна корова". На следующее предложенное число 213 ответ был: "один бык, ноль коров". Какие выводы можно сделать на основании этих ответов?
Ответ:
 (1) В задуманном числе нет цифры 3; 
 (2) В задуманном числе нет цифры 2; 
 (3) В задуманном числе нет цифры 1; 
 (4) Если в задуманном числе есть цифра 2, то она стоит на первом месте; 
 (5) Если в задуманном числе есть цифра 1, то она стоит на втором месте. 
Упражнение 8:
Номер 1
Какова восьмеричная запись десятичного числа 124?
Ответ:
 (1) 104; 
 (2) 170; 
 (3) 1104; 
 (4) 174. 
Номер 2
Какова троичная запись десятичного числа 124?
Ответ:
 (1) 11120; 
 (2) 11121; 
 (3) 11220; 
 (4) 11100. 
Номер 3
Какова двоичная запись десятичного числа 124?
Ответ:
 (1) 1111101; 
 (2) 1110110; 
 (3) 1111100; 
 (4) 1111110. 
Упражнение 9:
Номер 1
Какие утверждения справедливы при разборе целого десятичного числа N
на цифры?
Ответ:
 (1) Получить последнюю цифру можно взяв остаток от деления N
на 10; 
 (2) Получить последнюю цифру можно как результат деления нацело N
на 10; 
 (3) Отрезать последнюю цифру можно как результат деления нацело N
на 10. 
Номер 2
Какие утверждения справедливы при переводе целого десятичного числа N
в систему с основанием p
?
Ответ:
 (1) Получить последнюю цифру в записи числа N
в системе с основанием p
можно как остаток от деления числа N
на 10; 
 (2) Получить последнюю цифру в записи числа N
в системе с основанием p
можно как остаток от деления числа N
на p
; 
 (3) Число N
можно представить, как K
* p
+ C
, где K
– целое число, а C
– цифра в системе счисления с основанием p
. 
Номер 3
Дан фрагмент программы:
int N = 1237; int digit = N % 10; N = N/10;
Какие значения получили переменные?
Ответ:
 (1) digit
= 1; N
=237; 
 (2) digit
= 237; N
=1; 
 (3) digit
= 7; N
=123. 
Упражнение 10:
Номер 1
При сборке числа из цифр возникает необходимость преобразования символа, представляющего цифру в число. Дан фрагмент программы, выполняющий преобразование:
char d = '2';
int d1 = d, d2 = d - '0', d3 = int.Parse(d.ToString());
Какие утверждения справедливы для этого фрагмента?
Ответ:
 (1) Возникнет ошибка в ходе преобразования. 
 (2) Все переменные d1, d2, d3
будут иметь значение 2. 
 (3) Переменные d2
и d3
будут иметь значение 2. 
 (4) Переменная d1
будет иметь значение 50, представляющее код цифры 2; 
 (5) Все переменные будут иметь разные значения. 
Номер 2
При сборке числа из цифр возникает необходимость преобразования символа, представляющего цифру в число. Дан фрагмент программы, выполняющий преобразование:
char d = '7';
int d1 = d, d2 = d - '0', d3 = int.Parse(d.ToString());
Какие утверждения справедливы для этого фрагмента?
Ответ:
 (1) Возникнет ошибка в ходе преобразования. 
 (2) Все переменные d1, d2, d3
будут иметь значение 7. 
 (3) Переменные d2
и d3
будут иметь значение 7. 
 (4) Переменная d1
будет иметь значение 55, представляющее код цифры 7; 
 (5) Все переменные будут иметь разные значения. 
Номер 3
При сборке числа из цифр возникает необходимость преобразования символа, представляющего цифру в число. Дан фрагмент программы, выполняющий преобразование:
char d = '5';
int d1 = d, d2 = d - '0', d3 = int.Parse(d.ToString());
Какие утверждения справедливы для этого фрагмента?
Ответ:
 (1) Возникнет ошибка в ходе преобразования. 
 (2) Все переменные d1, d2, d3
будут иметь значение 5. 
 (3) Переменные d2
и d3
будут иметь значение 5. 
 (4) Переменная d1
будет иметь значение 53, представляющее код цифры 5; 
 (5) Все переменные будут иметь разные значения.