Общий тест по Computer Science — вопросы

Материал из DISCOPAL
Перейти к: навигация, поиск
12345678910
Общий тест по Computer Science

Вариант 3406093194.


Ваше имя*:


Вопрос 1

Рассмотрим фрагмент программы на C:

int fibo (int n)
{
   if (n<2)
      return n;
   else
      return fibo(n-1)+fibo(n-2);
}

Что fibo вернет для n=7?

  1.  8
  2.  5
  3.  7
  4.  20
  5.  13

Вопрос 2

Рассмотрим контекстно-свободную грамматику G1:

<Exp> → <Exp> + <Exp> | <Exp> - <Exp>
<Exp> → <Exp> * <Exp> | <Exp> / <Exp>
<Exp> → <Id>
<Id> → a | b | c | …  | y | z

Затем, рассмотрим ее модификацию G2:

<Exp> → <Term> | <Exp> + <Term> | <Exp> - <Term>
<Term> → <Factor> | <Term> * <Factor> | <Term> / <Factor>
<Factor> → <Id>
<Id> → a | b | c | …  | y | z

Теперь рассмотрим утверждения:

I
В дереве разбора грамматикой G2, «*» будет иметь больший приоритет чем «+»
II
G2 — однозначная грамматика
III
Модификация G2, в которой мы добавили новый нетерминал <Term>, привела к тому, что мультипликативные операции и операнды будут разбиратся на более нижнем уровне дерева разбора, чем операции сложения.
  1.  Только II и III
  2.  I, II, III
  3.  Только II
  4.  Только I и II
  5.  Только I

Вопрос 3

Теоретически возможно реализовать любую комбинаторную логику используя только «NAND» или «NOR» узлы. Какие плюсы наличия более широкого класса логических вентилей при проектировании? Рассмотрим гипотезы:

I
Дизайн схемы, включающей вентили «AND», «NAND», «OR» и «XOR», «NOT», почти во всех случаях можно реализовать меньшим числом компонент.
II
Чем шире набор булевых операций, тем проще при проектировании получаются представления булевых выражений.
III
Проектировщик избавляется от необходимости использовать диаграммы Карно.
  1.  Ничего не верно
  2.  I, II, III
  3.  Только II
  4.  I, II
  5.  Только I

Вопрос 4

Рассмотрим программу на C++:

#include <stdio.h>
 
int void main()
{
   int j=0, k=0;
   f(j);
   cout << j + k; 
}
 
void f (int& i)
{
   k = i + 3;
   i = k * i;
}

Напомним, что в C/C++, «int& i» — означает передачу целого параметра по ссылке.

Какое значение выведет программа?

  1.  Не скомпилируется
  2.  1
  3.  0
  4.  3
  5.  4
  6.  12

Вопрос 5

Рассмотрим контекстно-свободную грамматику:

 S → AB
 A → 1 | B1B
 B → 00A

Какую строку она может породить?

  1.  0110
  2.  11011110
  3.  Ничего из перечисленного
  4.  1001
  5.  0111

Вопрос 6

Проведем BFS-поиск (поиск в ширину), кратчайшего пути из A в Z:

[svg]

В каком порядке алгоритм посетит вершины?

  1.  A → C → E → B
  2.  A → C → F → D → E
  3.  A → C → D → F
  4.  A → C → F → E → B
  5.  A → C → B → D

Вопрос 7

Рассмотрим фрагмент программы на C:

int fibo (int n)
{
   if (n<2)
      return n;
   else
      return fibo(n-1)+fibo(n-2);
}

Чтобы найти время выполнения T(n) для «fibo», предположим, что для некоторых констант a и b

  • T(0) = T(1) = a → т.к. положительная ветка ветвления в функции занимает констатное время.
  • T(2) = b +2a → т.е. негативная ветка в ветвлении занимает некую константу, плюс два рекурсивных вызова.

Следующим шагом, определим рекуррентное соотношение, которое, если решить, будет определять время работы T(n) через константы a и b. Выберите правильное.

  1.  




  2.  


  3.  


  4.  


  5.  



Вопрос 8

Рассмотрим дерево: [svg]

Что нельзя о нем сказать?

  1.  Его высота — 2
  2.  Его можно обойти прямым и обратным обходом
  3.  У дерева есть корень
  4.  Это бинарное дерево

Вопрос 9

Какое из бинарных деревьев обеспечит быстрейший поиск элемента «2»?

  1.  [svg]
  2.  [svg]
  3.  [svg]
  4.  Нет правильного варианта.
  5.  [svg]

Вопрос 10

Отсортированный список из 500 чисел хранится в индексированном массиве. Чтобы найти определенный элемент-число, какое максимальное число поисковых операций нужно при…

  • последовательном поиске
  • бинарном поиске
  1.  250 и 9
  2.  500 и 9
  3.  25 и 7
  4.  250 и 8
  5.  500 и 250