Главная /
Программирование /
Основы программирования - обучения основам
Основы программирования - обучения основам - ответы на тесты Интуит
Правильные ответы выделены зелёным цветом.
Все ответы: Курс предназначен для обучения основам программирования. Рассматриваются основные понятия программирования - алгоритма, исполнителя, алгоритмического языка, переменной, основные типы данных, управляющие конструкции алгоритмического языка и т.п. Излагаются общие приемы программирования, основанные на применении математики, такие, как вычисление функций на последовательностях с помощью применения теории индуктивных функций и схема построения цикла с помощью инварианта.
Все ответы: Курс предназначен для обучения основам программирования. Рассматриваются основные понятия программирования - алгоритма, исполнителя, алгоритмического языка, переменной, основные типы данных, управляющие конструкции алгоритмического языка и т.п. Излагаются общие приемы программирования, основанные на применении математики, такие, как вычисление функций на последовательностях с помощью применения теории индуктивных функций и схема построения цикла с помощью инварианта.
Какой механизм применяется для выполнения программы,
написанной на языке C++?
(1) непосредственное выполнение машинных команд
(2) интерпретация
(3) компиляция "на лету"
Рассмотрим два способа представления матрицы размера
4×4. В первом случае используется массив из четырех
элементов типа «массив из четырех элементов»:
double a[4][4];
Во втором случае используется линейный массив из шестнадцати
элементов:
double a[16];
В первом случае обращение к элементу матрицы с индексами
a[i][j],
во втором — с помощью выражения
a[4*i + j].
Есть ли существенная разница в эффективности программы
в первом и втором случаях при использовании оптимизирующего
компилятора?
i
, j
осуществляется с помощью выражения
(1)
Да, есть, первый способ эффективнее.
(2)
Да, есть, второй способ эффективнее.
(3)
Существенной разницы нет.
Какая структура данных обычно используется
для сохранения состояния прерванного задания?
(1)
Стек.
(2)
Очередь.
Содержимое одного байта можно интерпретировать либо
как неотрицательное целое число в диапазоне 0...255,
либо как число со знаком в диапазоне -128...127.
Какое число со знаком имеет тот же двоичный код,
что и неотрицательное число 254?
(1)
Число -1.
(2)
Число -2.
(3)
Число -3.
В какой кодировке под символ отводится 2 байта?
(1)
В кодировке ASCII.
(2)
В кодировке UNICODE.
Чему равен минимум пустой последовательности
целых чисел?
(1)
Минус бесконечности.
(2)
Нулю.
(3)
Плюс бесконечности.
(4)
Невозможно дать разумное определение.
Рассмотрим следующий фрагмент программы:
утверждение: A(x)
цикл пока B(x)
| инвариант: A(x)
| x := T(x)
конец цикла
Здесь через
A(x)
и B(x)
обозначены условия, зависящие от переменной x
.
Какое условие выполняется по окончании цикла?
(1)
Условие
(не A(x) и B(x))
.
(2)
Условие
(A(x) и B(x))
.
(3)
Условие
(A(x) и не B(x))
.
Как подключаются внешние устройства к шине?
(1)
Последовательно.
(2)
Параллельно.
Пусть регистры R1 и R2 содержат два целых числа
R0 := 1;
L1:
CC0 := R2 - 0; // сравнить R2 с нулем
if (eq) goto L2; // переход, если равно
CC0 := R2 & 1; // проверить младший бит R2
if (eq) goto L3; // переход, если ноль
R2 := R2 - 1;
R0 := R0 * R1;
goto L4;
L3:
R2 := R2 / 2;
R1 := R1 * R1;
L4:
goto L1;
L2:
x
и y
. Указать, что будет содержать регистр R0 после выполнения
следующего фрагмента кода на RTL (знаком конъюнкции & обозначена
операция побитового логического умножения):
(1)
Произведение
x y
.
(2)
Степень
xy
.
Что содержат заголовочные, или h-файлы, в случае
языка Си?
(1)
Описания прототипов функций, внешних переменных,
констант и типов.
(2)
Определения функций и статических переменных.
Указать, чему будет равно значение переменной
int i = 10;
while (i <= 1000) {
i *= 2;
}
i
в результате
выполнения следующего фрагмента программы:
(1) Значение
i
равно 512.
(2) Значение
i
равно 640.
(3) Значение
i
равно 1024.
(4) Значение
i
равно 1280. В каком случае выполняется тело цикла "пока"?
(1) когда условие после слова "пока" в заголовке цикла истинно
(2) когда условие после слова "пока" в заголовке цикла ложно
Содержит ли язык Си средства ввода-вывода?
(1)
Да, имеется тип данных FILE и средста работы
с такими данными.
(2)
Нет, ввод и вывод поддерживается на уровне стандартных
библиотек, а не на уровне языка.
Обозначим через
push x;
push y;
pop x;
pop y;
Что происходит с переменными
push
и pop
команды добавления
элемента в стек и извлечения элемента из стека.
Рассмотрим фрагмент программы на псевдокоде:
x
и y
в результате
его выполнения?
(1)
Значения переменных не изменяются.
(2)
Переменные
x
и y
обмениваются своими значениями.
Рассмотрим непрерывную реализацию множества с помощью
бинарного поиска. Пусть множество содержит миллион элементов.
Сколько операций сравнения может быть выполнено при поиске
элемента?
(1)
Не больше 10.
(2)
Не больше 20.
(3)
Не больше 1000.
(4)
В худшем случае 500000 операций.
Целочисленная переменная
x := 32760;
x := x + 10;
x
представляет короткое целое число со знаком
в диапазоне -32768...32767 и занимает 2 байта.
Чему равно значение x
после выполнения приведенного
ниже фрагмента программы?
(1)
Значение
x
равно -2.
(2)
Значение
x
равно 2.
(3)
Значение
x
равно -32766.
Пусть значения целочисленных переменных
(x >= 1 и y < 0) или (x <= 1 и y > 0)
x
и y
равны 1 и 2 соответственно.
Указать значение логического выражения
(1)
Ложь.
(2)
Истина.
Что вычисляет следующий фрагмент программы?
вещ последовательность p;
вещ a, s, x, y;
. . .
s := 0.0; x := 0.0; y := 0.0;
встать в начало последовательности p;
цикл пока есть непрочитанные элементы в посл-ти p
| прочесть очередной элемент посл-ти p в (вых: a);
| s := s + a - x;
| x := y; y := a;
конец цикла
ответ := s;
(1)
сумму двух последних элементов последовательности
p
(2)
сумму трех последних элементов последовательности
p
(3)
сумму четырех последних элементов последовательности
p
Указать, что вычисляет следующий фрагмент программы:
дано: цел n;
цел s, k;
s := 2; k := 0;
цикл пока s <= n
| инвариант: s = 2k+1
| s := s * 2; k := k + 1;
конец цикла
ответ := k;
(1)
Целую часть квадратного корня из
n
.
(2)
Целую часть от
log2 n
.
Как располагаются разряды двоичного представления
целого числа внутри машинного слова
в архитектуре Little Endian (процессоры Intel, Alpha и т.п.)?
(1)
Младшие разряды числа в байтах с младшими адресами.
(2)
Младшие разряды числа в байтах со старшими адресами.
Пусть регистр EBX содержит адрес массива целых
чисел, регистр ECX — количество элементов массива.
Указать, что будет содержать регистр EAX
в результате выполнения следующего фрагмента кода
на Ассемблере "Masm" для процессора Intel 80x86:
mov EAX, 2147483647 ; EAX := плюс бесконечность
L1: ; метка начала цикла
cmp ECX, 0 ; сравнить ECX с нулем
jle L2 ; переход, если меньше или равно
mov EDX, [EBX] ; EDX := число с адресом EBX
cmp EDX, EAX ; сравнить EDX с EAX
jge L3 ; переход, если больше или равно
mov EAX, EDX ; EAX := EDX
L3: ;
add EBX, 4 ; EBX := EBX+4
dec ECX ; уменьшить ECX
jmp L1 ; переход на метку L1
L2: ; метка конца цикла
(1)
Максимальный элемент массива.
(2)
Индекс максимального элемента массива.
(3)
Минимальный элемент массива.
(4)
Индекс минимального элемента массива.
Каковы размеры типов short, int и long в 32-разрядной
архитектуре?
(1)
2 байта, 4 байта, 8 байтов.
(2)
2 байта, 4 байта, 4 байта.
(3)
2 байта, 2 байта, 4 байта.
Указать, чему будет равно значение переменной
int n = 0;
int i = 2;
switch (i) {
case 2:
n += 2;
case 4:
n += 2;
break;
default:
n += 6;
}
n
в результате
выполнения следующего фрагмента программы:
(1)
Значение
n
равно 2.
(2)
Значение
n
равно 4.
(3)
Значение
n
равно 6.
(4)
Значение
n
равно 10.
Сколько раз будет выполнено тело цикла в приведенной
ниже программе? Многоточием обозначен фрагмент,
не содержащий переменной
x := 0;
цикл пока x < 1000
| . . .
| x := x + 1;
конец цикла
x
.
(1)
Тело цикла будет выполнено 999 раз.
(2)
Тело цикла будет выполнено 1000 раз.
(3)
Тело цикла будет выполнено 1001 раз.
Что делает следующий фрагмент программы на Си?
FILE *f;
. . .
f = fopen("tmp.dat", "wb+");
(1)
Открывает файл "tmp.dat" в текущей директории
как бинарный для чтения и записи, при этом старое содержимое
файла сохраняется.
(2)
Открывает файл "tmp.dat" в текущей директории
как бинарный для чтения и записи, при этом старое содержимое
файла теряется.
(3)
Открывает файл "tmp.dat" в текущей директории
как бинарный для записи, при этом старое содержимое
файла теряется.
Выражение записано с использованием обратной польской
записи:
1, 2, 3, +, *, 4, 5, *, -
Чему равняется его значение?
(1)
Значение выражения равно -15.
(2)
Значение выражения равно -11.
(3)
Значение выражения равно 15.
(4)
Значение выражения равно 29.
Пусть требуется реализовать упорядоченный
набор различных элементов, при этом элементы можно
добавлять и удалять. Какая структура данных
лучше всего подходит для этого?
(1)
Дек.
(2)
Линейный двунаправленный список.
(3)
Множество, реализованное на базе упорядоченного
бинарного дерева.
Сколько двоичных разрядов отводится для хранения порядка
в двоичном коде вещественного числа типа double длиной 8 байтов?
(1)
8 разрядов.
(2)
11 разрядов.
Пусть
y > 0.1 и x / y >= 1.0?
x
и y
— вещественные
переменные типа double
.
Может ли произойти прерывание из-за деления на ноль
при вычислении логического выражения
(1) может
(2) не может
Является ли индуктивной функция, которая последовательности
вещественных чисел ставит в соответствие сумму ее первого
и последнего элементов?
(1)
Является.
(2)
Не является.
Рассмотрим следующий фрагмент программы:
цел m, n;
цел a, b, p;
. . .
a := m; b := n;
p := 0;
цикл пока b != 0
| если b четное
| | то
| | b := b / 2;
| | a := a * 2;
| | иначе
| | b := b - 1;
| | p := p + a;
| конец если
конец цикла
ответ := p;
Какое условие является инвариантом цикла?
(1)
Равенство
ab p = mn
.
(2)
Равенство
a b + p = m n
.
Что содержат общие регистры процессора?
(1)
Целые числа.
(2)
Вещественные числа.
Локальные переменные функции языка Си адресуются
относительно регистра FP (Frame Pointer — указатель
кадра). Что содержится в ячейке памяти, адрес которой
записан в регистре FP, в процессе выполнения тела
функции?
(1)
Первая локальная переменная, описанная
внутри функции.
(2)
Адрес возврата в вызывающую функцию.
(3)
Значение, которое содержалось в FP перед
вызовом функции.
Чему равна вещественная константа 1000e-4,
записанная в экспоненциальной форме?
(1)
Она равна константе 0.1, записанной в форме с фиксированной
десятичной точкой.
(2)
Она равна константе 10.0, записанной в форме с фиксированной
десятичной точкой.
(3)
Она равна константе 1.0, записанной в форме с фиксированной
десятичной точкой.
Где располагаются переменные, описанные внутри
функции, в описании которых отсутствуют модификаторы типа?
(1)
В статической памяти.
(2)
В динамической памяти.
(3)
В стеке.
Чему равно значение целочисленной переменной
x := 1;
цикл пока x < 100
| x := -(x * 2);
конец цикла
x
в результате выполнения приведенного ниже фрагмента программы?
(1)
Значение
x
= 64.
(2)
Значение
x
= 128.
(3)
Значение
x
= 256.
Рассмотрим следующий фрагмент программы:
#include <string.h>
. . .
int n;
char a[32];
strcpy(a, "e2e4");
strcpy(a + 5, "c7c5");
n = strlen(a);
Чему будет равно значение переменной
n
в результате выполнения этого фрагмента?
(1)
Значение
n
равно 4.
(2)
Значение
n
равно 5.
(3)
Значение
n
равно 8.
(4)
Значение
n
равно 9.
(5)
Значение
n
равно 10.
(6)
Значение
n
равно 32.
Рассмотрим следующую реализацию функции
static void onDiv() {
double y, x;
if (st_size() < 2) {
printf("Stack depth < 2.\n");
return;
}
y = st_pop();
x = st_pop();
assert(y != 0.0); // утв: y отлично от нуля
st_push(x / y);
display();
}
Правильно ли здесь используется конструкция «утверждение»,
которая в Си реализуется функцией
onDiv
,
которая исполняет команду деления в проекте
«Стековый калькулятор»:
assert
?
(1)
Правильно, поскольку деление на ноль невозможно, следовательно,
выполнение программы должно быть прекращено.
(2)
Неправильно, поскольку прекращение выполнения программы
при невыполнении утверждения должно происходить в результате
ошибки в программе, а не из-за некорректных входных данных.
Пусть в красно-черном дереве число черных вершин
(не включая внешние, или нулевые, вершины) равно 21.
Какое максимальное количество красных вершин может
быть в дереве?
(1)
Максимальное количество красных вершин равно 9.
(2)
Максимальное количество красных вершин равно 10.
(3)
Максимальное количество красных вершин равно 11.
(4)
Максимальное количество красных вершин равно 41.
(5)
Максимальное количество красных вершин равно 42.
Какова точность вычислений с вещественными
числами типа double?
(1)
Примерно 7 значащих десятичных цифр.
(2)
Примерно 12 значащих десятичных цифр.
(3)
Примерно 16 значащих десятичных цифр.
В каком алгоритмическом языке текстовая строка представляется
последовательностью байтов, в которой первый байт содержит
длину строки, а далее следуют коды символов, составляющих строку?
(1)
В языке Си.
(2)
В языке Паскаль.
Функция F последовательности цифр в десятичной записи числа
n
ставит в соответствие единицу, если n
делится на 7,
и ноль в противном случае. Какая из приведенных
ниже функций на последовательности десятичных цифр числа n
является индуктивным расширением функции F?
(1)
Остаток от деления числа
n
на 231.
(2)
Пара (остаток от деления числа
n
на 100,
остаток от деления числа n
на 11).
(3)
Пара (последняя цифра числа
n
, сумма цифр числа n
).
Оценить сверху время работы (т.е. количество
выполнений тела цикла) алгоритма Евклида
вычисления НОД двух целых чисел:
дано: целые числа m, n, хотя бы одно отлично от нуля
надо: вычислить наибольший общий делитель пары (m, n)
цел a, b, r;
a := m; b := n;
цикл пока b != 0
| инвариант: НОД(a, b) == НОД(m, n)
| r := a % b; // находим остаток от деления a на b
| a := b; b := r; // заменяем пару (a, b) на (b, r)
конец цикла
ответ := a;
(1)
Время работы не больше, чем
C·log2 max(m, n)
,
где C
— некоторая константа
(т.е. время пропорционально количеству цифр в двоичной или
десятичной записи максимального из чисел m
, n
).
(2)
Время работы не больше, чем
C·r
, где C
— некоторая константа,
r
—
квадратный корень из max(m, n)
(т.е. время пропорционально квадратному корню из максимального
числа).
(3)
Время работы не больше, чем
C·max(m, n)
,
где C
— некоторая константа
(т.е. время пропорционально максимальному из чисел m
, n
).
Какой регистр процессора содержит адрес инструкции,
которая будет выполняться на следующем шаге?
(1)
Регистр SP.
(2)
Регистр PC.
(3)
Регистр FP.
Какой механизм используется для реализации виртуальной
памяти в многозадачных операционных системах?
(1)
Механизм страничной организации памяти.
(2)
Разделение памяти на сегменты и использование
сегментных регистров.
Пусть p и q — два указателя на целочисленное значение:
int *p, *q;
Укажите все корректные выражения языка Си среди перечисленных
ниже:
(1)
p + q
(2)
p - q
(3)
p + 10
(4)
p - 10
Пусть описана структура
struct List {
struct List *next;
void *value;
};
и переменые
struct List e, *p;
int m;
Укажите все корректные выражения языка Си среди перечисленных
ниже:
(1)
e = *p
(2)
m = *(int*) p->next->value
(3)
m = e->value
(4)
m = *(e.value)
Завершится ли когда-нибудь выполнение цикла в приведенном ниже фрагменте программы (
x := 1;
цикл пока x != 56
| x := x * 11;
| если x <= 253
| | то x := x - 253;
| конец если
конец цикла
!=
- означает "не равно")?
(1) завершится
(2) не завершится
(3) завершится на 253-ем шаге
Рассмотрим следующий фрагмент программы:
#include <string.h>
#include <сtype.h>
. . .
int n, i;
char a[32];
strcpy(a, "11B");
n = 0; i = 0;
while (a[i] != 0) {
n *= 16;
if (isdigit(a[i])) {
n += a[i] - '0';
} else if ('A' <= a[i] && a[i] <= 'F') {
n += (a[i] - 'A') + 10;
}
++i;
}
Чему будет равно значение переменной
n
в результате выполнения этого фрагмента?
(1)
Значение
n
равно 121.
(2)
Значение
n
равно 155.
(3)
Значение
n
равно 283.
(4)
Значение
n
равно 299.
Выражение содержит числа, переменные, круглые скобки и знаки
четырех арифметических операций. Его можно
преобразовывать, пользуясь известными свойствами
арифметических операций. Значения переменных сообщаются
только после того, как выражение преобразовано в удобную для
вычисления форму. Какой максимальной глубины стека достаточно,
чтобы вычислить значение любого такого выражения с помощью
стекового калькулятора (записывать промежуточные результаты
на бумаге запрещено)?
(1)
Достаточно стека максимальной глубины 3.
(2)
Достаточно стека максимальной глубины 4.
(3)
Достаточно стека максимальной глубины 5.
(4)
Достаточно стека максимальной глубины 6.
В хеш-реализации множества хеш-функция принимает 10
различных значений с равной вероятностью. Пусть множество содержит
3 элемента. Какова вероятность коллизии? (Коллизией
называется ситуация, когда у двух элементов значения
хеш-функции совпадают.)
(1)
Вероятность коллизии равна 0.19
(2)
Вероятность коллизии равна 0.2
(3)
Вероятность коллизии равна 0.28
(4)
Вероятность коллизии равна 0.3
Всегда ли равны выражения
(x + y) + z, x + (y + z)
для произвольных вещественных переменных
x
, y
, z
типа double?
(1)
Да, всегда равны.
(2)
Нет, могут быть неравными.
В каком алгоритмическом языке — в Паскале или в Си —
операция конкатенации (соединения) строк реализуется более
эффективно?
(1)
В Паскале.
(2)
В Си.
(3)
Нет существенной разницы.
Следующий фрагмент программы вычисляет сумму четырех
последних элементов последовательности p:
вещ последовательность p;
вещ x, y, z, t;
. . .
x := 0.0; y := 0.0; z := 0.0; t := 0.0;
встать в начало последовательности p;
цикл пока есть непрочитанные элементы в посл-ти p
| x := y; y := z; z := t;
| прочесть очередной элемент посл-ти p в (вых: t);
конец цикла
ответ := x + y + z + t;
В нем используются четыре вспомогательные переменные
x
, y
, z
, t
. Можно ли упростить
программу, использовав меньшее количество вспомогательных
переменных? (Последовательность разрешается читать только один раз.)
(1)
Можно.
(2)
Нельзя.
Пусть
// Программа корень функции
цел a, b, c;
. . .
утверждение: a < b и f(a) * f(b) <= 0;
// Значения функции на концах отрезка [a,b] разных знаков
цикл пока b - a > 1
| инвариант: f(a) * f(b) <= 0
| // Делим отрезок [a, b] пополам
| c := (a + b) / 2; // c -- целая часть (a+b)/2
| если f(a) * f(c) < 0
| | то b := c; // выбираем левую половину отрезка
| | иначе a := c; // выбираем правую половину отрезка
| конец если
конец цикла
утверждение: a == b - 1 и f(a) * f(b) <= 0;
f(x)
— целочисленная функция от целочисленного
аргумента. Определить,
содержит ли следующий фрагмент программы ошибку
(т.е. действительно ли тело цикла сохраняет инвариант):
(1)
Ошибки нет, фрагмент программы корректный.
(2)
Фрагмент программы содержит ошибку.
Где располагаются элементы аппаратного стека?
(1)
В оперативной памяти.
(2)
Во внутренней памяти процессора.
Являются ли локальные переменные функции общими
для разных нитей (threads), работающих параллельно
в рамках одного процесса?
(1)
Являются общими.
(2)
Разные для разных нитей.
Чему равно значение выражения
((786 >> 8) | 17)
?
(1)
Значение выражения равно 19.
(2)
Значение выражения равно 21.
(3)
Значение выражения равно 49.
(4)
Значение выражения равно 115.
Пусть описан тип R2Vector, представляющий вектор
на плоскости с вещественными координатами:
typedef struct {
double x;
double y;
} R2Vector;
также описаны три переменные
R2Vector u, v, w;
double s;
при этом известно, что переменные
w.x = (-u.y); w.y = u.x;
s = v.x * w.x + v.y * w.y;
// s == 0.7071
На какой угол надо повернуть вектор
u
, v
и
w
типа вектор и вещественная переменная s
:
u
и v
содержат два конкретных
вектора единичной длины.
Пусть в результате выполнения следующего фрагмента программы
значение переменной s
приблизительно равно 0.7071,
т.е. корню из двух, деленному пополам:
u
,
чтобы получить вектор v
?
(1)
На угол 30 градусов по часовой стрелке.
(2)
На угол 30 градусов против часовой стрелке.
(3)
На угол 45 градусов по часовой стрелке.
(4)
На угол 45 градусов против часовой стрелки.
Текстовый файл содержит последовательность
целых чисел в десятичной записи, каждое число записано
в отдельной строке. Какую функцию следует использовать
для последовательного считывания чисел?
(1)
Функцию fread.
(2)
Функцию fscanf.
Рассмотрим фрагмент программы на языке PostScript:
10 10 moveto
20 30 lineto
30 10 lineto
15 20 moveto
25 20 lineto
stroke
Что будет нарисовано в результате его выполнения?
(1)
Буква K.
(2)
Буква A.
(3)
Трапеция.
Как оценивается сверху высота
h
сбалансированного (почти
сбалансированного) бинарного дерева в зависимости от числа
вершин n
?
(1)
Справедливо неравенство
h <= C log2 n
,
где C
— константа.
(2)
Справедливо неравенство
h <= n/2
.
Что представляет собой двоичный код мантиссы
вещественного числа 1.5 типа double?
(1)
Двоичный код мантиссы содержит единицу в старшем
разряде и нули в остальных разрядах: 100000...000.
(2)
Двоичный код мантиссы содержит единицы в двух старших
разрядах и нули в остальных разрядах: 110000...000.
Указать, что произойдет с элементами массива
вещ a[100]; вещ t; цел i;
a[0] = 0;
. . .
a[99] = 99;
i := 0;
t := a[0];
цикл пока i < 99
| a[i] := a[i+1];
| i := i+1;
конец цикла
a[99] := t;
a
в результате выполнения следующего фрагмента программы:
(1)
Элементы массива циклически сдвинутся влево.
(2)
Все элементы массива станут равными 99-му элементу.
Рассмотрим функцию F, которая последовательности
коэффициентов многочлена по убыванию степеней
ставит в соответствие значение второй производной многочлена
в точке t. Какая из приведенных ниже функций на
последовательностях является индуктивным расширением
функции F?
(1)
Тройка (значение многочлена, значение производной,
значение второй производной).
(2)
Пара (степень многочлена, значение второй производной).
Какое утверждение является инвариантом для следующего
фрагмента программы (т.е. из справедливости утверждения
до выполнения фрагмента программы вытекает справедливость утверждения
после выполнения)? Предполагается, что
вещ r, x; цел n;
. . .
r := r * x * x;
r := r / ((n + 1) * (n + 2));
n := n + 2;
n
неотрицательно.
(1)
Утверждение
r = xn / n!
,
где восклицательным знаком обозначен факториал числа n
.
(2)
Утверждение
r = xn / ((n+1)·(n+2))
.
Сколько аргументов имеют команды процессоров типа Intel 80x86?
(1)
Не больше двух (двухадресная архитектура).
(2)
Не больше трех (трехадресная архитектура).
Какое прерывание происходит при попытке выполнить
деление на ноль?
(1)
Синхронное.
(2)
Acинхронное.
Что означает описание "
int *f()
"?
(1)
f
— указатель на функцию,
возвращающую целочисленное значение.
(2)
f
— функция,
возвращающая указатель на целочисленное значение.
Прототип функции, которая вычисляет сумму элементов массива
double sum(const double *a, int n);
Можно ли в описании этой функции и ее прототипа опустить слово const?
(Могут ли при этом в корректной программе возникнуть
ошибки или предупреждения на стадии компиляции?)
a
длины n
, выглядит следующим образом:
(1)
Нельзя (могут возникнуть ошибки компиляции или предупреждения
в корректной программе).
(2)
Можно (ошибки компиляции или предупреждения при таком изменении
в корректной программе не возникнут).
Какой механизм применяется для выполнения программы,
написанной на языке C#?
(1)
непосредственное выполнение машинных команд
(2)
интерпретация
(3)
компиляция
Рассмотрим два способа представления матрицы размера
4×4. В первом случае используется массив из четырех
элементов типа «указатель на double»:
double *a[4];
при этом элемент
double a[16];
В первом случае обращение к элементу матрицы с индексами
a[i][j],
во втором — с помощью выражения
a[4*i + j].
Есть ли существенная разница в эффективности программы
в первом и втором случаях при использовании оптимизирующего
компилятора?
a[i]
содержит адрес
начала i
-й строки матрицы.
Во втором случае используется линейный массив из шестнадцати
элементов:
i
, j
осуществляется с помощью выражения
(1)
Да, есть, первый способ эффективнее.
(2)
Да, есть, второй способ эффективнее.
(3)
Существенной разницы нет.
Какая структура данных обычно используется
при передаче параметров подпрограммам и функциям?
(1)
Стек.
(2)
Очередь.
На базе какой структуры данных удобно реализовать
стек?
(1)
На базе линейного однонаправленного списка.
(2)
На базе очереди.
(3)
На базе множества.
Содержимое двухбайтового слова можно интерпретировать либо
как неотрицательное целое число в диапазоне 0...65535,
либо как число со знаком в диапазоне -32768...32767.
Какое число со знаком имеет тот же двоичный код,
что и неотрицательное число 65533?
(1)
Число -1.
(2)
Число -2.
(3)
Число -3.
Чему равен максимум пустой последовательности
вещественных чисел?
(1)
Минус бесконечности.
(2)
Нулю.
(3)
Плюс бесконечности.
(4)
Невозможно дать разумное определение.
Выполняется ли инвариант цикла в процессе выполнения
тела цикла?
(1)
Да, выполняется.
(2)
Не обязательно.
Как нумеруются биты внутри байта или машинного слова?
(1)
Справа налево, начиная с нуля.
(2)
Слева направо, начиная с нуля.
(3)
Слева направо, начиная с единицы.
Пусть регистры R1 и R2 содержат два целых числа
R0 := 0;
L1:
CC0 := R2 - 0; // сравнить R2 с нулем
if (eq) goto L2; // переход, если равно
CC0 := R2 & 1; // проверить младший бит R2
if (eq) goto L3; // переход, если ноль
R2 := R2 - 1;
R0 := R0 + R1;
goto L4;
L3:
R2 := R2 / 2;
R1 := R1 * 2;
L4:
goto L1;
L2:
x
и y
. Указать, что будет содержать регистр R0 после выполнения
следующего фрагмента кода на RTL (знаком конъюнкции & обозначена
операция побитового логического умножения):
(1)
Произведение
x y
.
(2)
Степень
xy
.
Где размещаются определения глобальных и статических
переменных языка Си?
(1)
В заголовочных файлах (h-файлах).
(2)
В файлах реализации (c-файлах).
Указать, чему будет равно значение переменной
int n = 1000;
while (n > 100) {
n /= 2;
}
n
в результате
выполнения следующего фрагмента программы:
(1)
Значение
n
равно 50.
(2)
Значение
n
равно 56.
(3)
Значение
n
равно 62.
Что можно сказать об условии, указанном в заголовке цикла "пока",
после полного завершения цикла?
(1)
Условие истинно.
(2)
Условие ложно.
Является ли тип данных FILE частью языка Си?
(1)
Да, этот тип входит в язык и предназначен для
работы с файлами.
(2)
Нет, этот тип не входит в язык; он описан в
стандартной библиотеке ANSI.
Пусть даны очередь и стек.
Рассмотрим фрагмент программы на псевдокоде:
сделать стек пустым;
цикл пока очередь непуста
| x := взять элемент из начала очереди;
| добавить (вход: x) в стек;
конец цикла
цикл пока стек непуст
| x := взять элемент из стека;
| добавить (вход: x) в конец очереди;
конец цикла
Что произойдет с очередью в результате
его выполнения?
(1)
Очередь не изменится.
(2)
Порядок элементов очереди изменится на противоположный.
Элементы множества хранятся в массиве в возрастающем
порядке. Пусть множество содержит 12 элементов.
Сколько операций сравнения достаточно выполнить,
чтобы найти произвольный элемент в множестве или убедиться в его
отсутствии?
(1)
Достаточно трех операций.
(2)
Достаточно четырех операций.
(3)
Достаточно пяти операций.
(4)
Достаточно шести операций.
Целочисленная переменная
x := 120;
x := x + 40;
x
представляет короткое целое число со знаком
в диапазоне -128...127 и занимает 1 байт.
Чему равно значение x
после выполнения приведенного
ниже фрагмента программы?
(1)
Значение
x
равно -32.
(2)
Значение
x
равно -96.
(3)
Значение
x
равно 32.
Пусть значения целочисленных переменных
(x > 1 и y <= 10) или x == 0
x
и y
равны 100 и 10 соответственно.
Указать значение логического выражения
(1)
Ложь.
(2)
Истина.
Что вычисляет следующий фрагмент программы?
вещ последовательность p;
вещ a, s; цел n;
. . .
s := минус бесконечность;
n := 0;
встать в начало последовательности p;
цикл пока есть непрочитанные элементы в посл-ти p
| прочесть очередной элемент посл-ти p в (вых: a);
| если a > s
| | то
| | s := a; n := 1;
| иначе если a == s
| | то
| | n := n + 1;
| конец если
конец цикла
ответ := n;
(1) максимум элементов последовательности
p
(2) число максимальных элементов последовательности
p
(3) число элементов последовательности
p
Указать, что вычисляет следующий фрагмент программы:
дано: цел n;
цел x, y;
x := 1; y := 4;
цикл пока y <= n
| инвариант: y = (x + 1)2;
| x := x + 1;
| y := y + 2*x + 1;
конец цикла
ответ := x;
(1)
Целую часть от
n / 2
;
(2)
Целую часть квадратного корня из
n
.
(3)
Целую часть от
log2 n
.
Как располагаются разряды двоичного представления
целого числа внутри машинного слова
в архитектуре Big Endian (процессоры Motorola, Power PC и т.п.)?
(1)
Младшие разряды числа в байтах с младшими адресами.
(2)
Младшие разряды числа в байтах со старшими адресами.
Пусть регистр EBX содержит адрес массива целых
чисел, регистр ECX — количество элементов массива.
Указать, что будет содержать регистр EAX
в результате выполнения следующего фрагмента кода
на Ассемблере "Masm" для процессора Intel 80x86:
mov ESI, 0 ; ESI := 0
mov EDI, -2147483648 ; EDI := минус бесконечность
L1: ; метка начала цикла
cmp ESI, ECX ; сравнить ESI с ECX
jge L2 ; переход, если больше или равно
mov EDX, [EBX] ; EDX := число с адресом EBX
cmp EDX, EDI ; сравнить EDX с EDI
jle L3 ; переход, если меньше или равно
mov EDI, EDX
mov EAX, ESI ; EAX := ESI
L3: ;
add EBX, 4 ; EBX := EBX+4
inc ESI ; увеличить ESI
jmp L1 ; переход на метку L1
L2: ; метка конца цикла
(1) максимальный элемент массива
(2) индекс максимального элемента массива
(3) минимальный элемент массива
(4) индекс минимального элемента массива
Каковы размеры типов float и double в языке Си?
(1)
2 байта, 4 байта.
(2)
4 байта, 8 байтов.
(3)
4 байта, 10 байтов.
(4)
8 байтов, 10 байтов.
Указать, чему будет равно значение переменной
int n = 33;
switch (n % 4) {
case 1:
n += 3;
case 2:
n += 2;
case 3:
++n;
break;
default:
++n;
}
n
в результате
выполнения следующего фрагмента программы:
(1)
Значение
n
равно 34.
(2)
Значение
n
равно 36.
(3)
Значение
n
равно 39.
(4)
Значение
n
равно 40.
Сколько раз будет выполнено тело цикла в приведенной
ниже программе? Многоточием обозначен фрагмент,
не содержащий переменной
x := 100;
цикл пока x >= 0
| . . .
| x := x - 1;
конец цикла
x
.
(1)
Тело цикла будет выполнено 99 раз.
(2)
Тело цикла будет выполнено 100 раз.
(3)
Тело цикла будет выполнено 101 раз.
Что делает следующий фрагмент программы на Си?
FILE *f;
. . .
f = fopen("tmp.dat", "rb+");
(1)
Открывает файл "tmp.dat" в текущей директории
как бинарный для чтения и записи, при этом старое содержимое
файла сохраняется.
(2)
Открывает файл "tmp.dat" в текущей директории
как бинарный для чтения и записи, при этом старое содержимое
файла теряется.
(3)
Открывает файл "tmp.dat" в текущей директории
как бинарный для чтения, при этом старое содержимое
файла сохраняется.
Выражение записано с использованием обратной польской
записи:
0, 1, *, 2, -, 3, 4, *, 5, +, 6, *, +
Чему равняется его значение?
(1)
Значение выражения равно 25.
(2)
Значение выражения равно 100.
(3)
Значение выражения равно 104.
(4)
Значение выражения равно 136.
Пусть требуется реализовать упорядоченный набор элементов,
причем элемент может повторяться в наборе несколько раз.
Элементы можно добавлять к набору и удалять из набора. Какая
структура данных лучше всего подходит для этого?
(1)
Линейный двунаправленный список.
(2)
Множество, реализованное на базе упорядоченного
бинарного дерева.
(3)
Нагруженное множество, реализованное на базе упорядоченного
бинарного дерева.
(4)
Динамический массив.
Сколько двоичных разрядов отводится под знак, порядок и мантиссу
в двоичном коде вещественного числа типа float длиной 4 байта?
(1)
Под знак — 1 разряд, порядок — 8 разрядов,
мантиссу — 23 разряда.
(2)
Под знак — 1 разряд, порядок — 11 разрядов,
мантиссу — 20 разрядов.
Пусть
x / y >= 1.0 и y > 0.1?
x
и y
— вещественные
переменные типа double.
Может ли произойти прерывание из-за деления на ноль
при вычислении логического выражения
(1)
Может.
(2)
Не может.
Является ли индуктивной функция, которая последовательности
коэффициентов многочлена по убыванию степеней ставит
в соответствие пару чисел:
(степень многочлена, интеграл многочлена по отрезку [0, 1])?
(1)
Является.
(2)
Не является.
Рассмотрим следующий фрагмент программы:
цел m, n;
. . .
дано: m >= 0 и n >= 0
цел a, b, c;
a := m; b := n;
c := 1;
цикл пока a != 0 и b != 0
| если a четное и b четное
| | то a := a / 2;
| | b := b / 2;
| | c := c * 2;
| иначе если a четное
| | то a := a / 2;
| иначе если b четное
| | то b := b / 2;
| иначе
| | если a > b
| | | то a := a - b;
| | | иначе b := b - a;
| | конец если
| конец если
конец цикла
ответ := c * (a + b);
Какое условие является инвариантом цикла?
(Через НОД и НОК обозначены наибольший общий делитель и
наименьшее общее кратное.)
(1)
Равенство
НОД(a, b) = НОД(m, n)·c
.
(2)
Равенство
НОК(m, n) = c·(a + b)
.
(3)
Равенство
НОД(a,b)·c = НОД(m, n)
.
Что содержит регистр флагов?
(1)
Биты, устанавливаемые в ноль или единицу
в зависимости от результата выполнения последней команды,
каждый бит отвечает за определенный признак.
(2)
Биты, задающие состояние выполняемого задания
(приоритет, разрешение прерываний и т.п.).
Функция языка Си имеет прототип
int f(int x, int y);
(т.е. имеет два целочисленных аргумента и
возвращает целочисленное значение).
Локальные переменные и аргументы функции
адресуются относительно регистра FP, т.е. их адреса
равны сумме содержимого FP и константы, задающей смещение.
Чему равен адрес аргумента
y
функции?
(1)
Адрес
y
равен FP+4.
(2)
Адрес
y
равен FP+8.
(3)
Адрес
y
равен FP+12.
(4)
Адрес
y
равен FP-4.
(5)
Адрес
y
равен FP-8.
(6)
Адрес
y
равен FP-12.
Чему равна вещественная константа 0.001e+4,
записанная в экспоненциальной форме?
(1)
Она равна константе 0.1, записанной в форме с фиксированной
десятичной точкой.
(2)
Она равна константе 10.0, записанной в форме с фиксированной
десятичной точкой.
(3)
Она равна константе 1.0, записанной в форме с фиксированной
десятичной точкой.
Где располагаются глобальные переменные?
(1)
В статической памяти.
(2)
В динамической памяти.
(3)
В стеке.
Пусть
x := 1;
y := 1;
цикл пока A(x)
| . . .
| если y < 0
| | то
| | x := 2;
| | y := 10;
| | иначе
| | x := 1;
| | y := 20;
| конец если
конец цикла
A = A(x)
—
некоторое условие, зависящее только от
значения переменной x
.
Указать, чему может быть равно значение переменной y
в результате выполнения следующего фрагмента программы:
(1)
Значение
y
равно 1 или 10.
(2)
Значение
y
равно 1 или 20.
(3)
Значение
y
может быть равным любому из чисел
1, 10, 20.
В операционной системе MS Windows
файл "tmp.dat" создается в результате выполнения следующего
фрагмента программы:
int a[3]; int i;
FILE *f = fopen("tmp.dat", "wt");
a[0] = 1; a[1] = 10; a[2] = 100;
for (i = 0; i < 3; ++i) {
fprintf(f, "%d\n", a[i]);
}
fclose(f);
Чему равен размер файла "tmp.dat" в байтах?
(1)
Размер файла равен 8 байтам.
(2)
Размер файла равен 9 байтам.
(3)
Размер файла равен 11 байтам.
(4)
Размер файла равен 12 байтам.
Рассмотрим фрагмент программы на языке PostScript:
10 10 moveto
20 30 lineto
10 50 lineto
30 50 moveto
20 30 lineto
30 10 lineto
stroke
Что будет нарисовано в результате его выполнения?
(1)
Буква A.
(2)
Буква M.
(3)
Буква X.
Бинарное дерево называется полным, если
длины всех путей к внешним (нулевым) вершинам одинаковы.
(Это означает, что у каждой нетерминальной вершины ровно
два сына, и длины всех путей от корня к терминальным вершинам
одинаковы и равны высоте дерева.) Высотой дерева называется
число вершин в пути максимальной длины от корня к
некоторой терминальной вершине, включая первую и последнюю вершины
пути. Сколько вершин в полном бинарном дереве высоты 10?
(1)
Число вершин равно 511.
(2)
Число вершин равно 512.
(3)
Число вершин равно 1023.
(4)
Число вершин равно 1024.
Что представляет собой двоичный код мантиссы
вещественного числа 2.5 типа double?
(1)
Двоичный код мантиссы содержит ноль и единицу в двух
старших разрядах и нули в остальных разрядах: 010000...000.
(2)
Двоичный код мантиссы содержит последовательность
101 в трех старших разрядах
и нули в остальных разрядах: 101000...000.
Указать, что произойдет с элементами массива
вещ a[100]; цел i;
. . .
i := 0;
цикл пока i < 99
| a[i+1] := a[i];
| i := i+1;
конец цикла
a[0] := a[99];
a
в результате выполнения следующего фрагмента программы:
(1) элементы массива циклически сдвинутся вправо
(2) все элементы массива станут равными элементу с индексом 0
(3) все элементы массива станут равными элементу с индексом 99
(4) все элементы массива станут равными 0
Рассмотрим функцию F, которая в последовательности
коэффициентов многочлена по возрастанию степеней
ставит в соответствие значение второй производной многочлена
в точке t. Какая из приведенных ниже функций на
последовательностях является индуктивным расширением
функции F?
(1)
Тройка (значение многочлена, значение производной,
значение второй производной).
(2)
Пара (степень многочлена, значение второй производной).
Какое утверждение является инвариантом для следующего
фрагмента программы (т.е. из справедливости утверждения
до выполнения фрагмента программы вытекает справедливость утверждения
после выполнения)? Предполагается, что
вещ r, x; цел n;
. . .
r := -r * x;
r := r * n / (n + 1);
n := n + 1;
n > 0
.
(1)
Утверждение
r = (-1)n xn/n!
,
где восклицательным знаком обозначен факториал числа n
.
(2)
Утверждение
r = (-1)n-1 xn/n
.
Сколько аргументов имеют команды процессоров типа Motorola 68000?
(1)
Не больше двух (двухадресная архитектура).
(2)
Не больше трех (трехадресная архитектура).
Какое прерывание происходит при нажатии на
клавишу на клавиатуре компьютера?
(1)
Синхронное.
(2)
Acинхронное.
Что означает описание "
double (*a)[10]
"?
(1)
a
— указатель на массив из 10 элементов
типа double
.
(2)
a
— массив из 10 элементов
типа указатель на double
.
Прототип функции, вычисляющей степень
double power(const double a, const double n);
Можно ли в описании этой функции и ее прототипа опустить слова const?
(Могут ли при этом в корректной программе возникнуть
ошибки или предупреждения на стадии компиляции?)
n
числа a
,
выглядит следующим образом:
(1)
Нельзя (могут возникнуть ошибки компиляции или предупреждения
в корректной программе).
(2)
Можно (ошибки компиляции или предупреждения при таком изменении
в корректной программе не возникнут).
Чему равно значение целочисленной переменной
x := 64;
цикл пока x*x > 100
| x := -(x / 2);
конец цикла
x
в результате выполнения приведенного ниже фрагмента программы?
(1)
Значение
x
= 16.
(2)
Значение
x
= 8.
(3)
Значение
x
= -8.
(4)
Значение
x
= 4.
Рассмотрим следующий фрагмент программы:
#include <string.h>
. . .
int n;
char a[32];
strcpy(a, "abcdefgh" + 5);
strcpy(a + 4, "1234");
n = strlen(a);
Чему будет равно значение переменной
n
в результате выполнения этого фрагмента?
(1)
Значение
n
равно 3.
(2)
Значение
n
равно 4.
(3)
Значение
n
равно 7.
(4)
Значение
n
равно 8.
(5)
Значение
n
равно 9.
(6)
Значение
n
равно 32.
Рассмотрим следующую реализацию функции
static void onMul() {
double y, x;
assert(st_size() >= 2); // утв: глубина стека
// не меньше двух
y = st_pop();
x = st_pop();
st_push(x * y);
display();
}
Правильно ли здесь используется конструкция «утверждение»,
которая в Си реализуется функцией
onMul
,
которая исполняет команду умножения в проекте
«Стековый калькулятор»:
assert
?
(1)
Правильно, поскольку выполнение любой бинарной операции,
в частности, умножения, возможно лишь, когда в стеке
не меньше двух элементов. Следовательно,
выполнение программы должно быть прекращено.
(2)
Неправильно, поскольку прекращение выполнения программы
при невыполнении утверждения должно происходить в результате
ошибки в программе, а не из-за некорректных входных данных.
Может ли в красно-черном дереве
длина одного пути от корня к терминальной вершине
равняться 20, длина другого — 10?
(1)
Может.
(2)
Не может.
Какова точность вычислений с вещественными
числами типа float?
(1)
Примерно 7 значащих десятичных цифр.
(2)
Примерно 12 значащих десятичных цифр.
(3)
Примерно 16 значащих десятичных цифр.
Есть ли ограничение на длину текстовой строки в языке Паскаль?
(1)
Нет, строка может иметь произвольную длину.
(2)
Да, длина строки ограничена числом 255.
(3)
Да, длина строки ограничена числом 256.
Функция F последовательности цифр в десятичной записи числа
n
ставит в соответствие единицу, если n
делится на 15,
и ноль в противном случае. Какая из приведенных
ниже функций на последовательности десятичных цифр числа n
является индуктивным расширением функции F?
(1)
Две последних цифры числа
n
.
(2)
Остаток от деления числа
n
на 231.
(3)
Пара (остаток от деления числа
n
на 20,
остаток от деления числа n
на 24).
(4)
Пара (остаток от деления числа
n
на 100,
остаток от деления числа n
на 35).
Оценить сверху время работы (т.е. количество
выполнений тела цикла) алгоритма быстрого возведения в степень:
дано: основание a и показатель степени n >= 0
надо: вычислить a в степени n
вещ b, p; цел k;
b := a; p := 1.0; k := n;
цикл пока k > 0
| инвариант: bk p = an
| если k четное
| | то
| | k := k / 2;
| | b := b * b;
| | иначе
| | k := k - 1;
| | p := p * b;
| конец если
конец цикла
ответ := p;
(1)
Время работы не больше, чем
C·n
,
где C
— некоторая константа
(т.е. время пропорционально числу n
).
(2)
Время работы не больше, чем
C·log2 n
,
где C
— некоторая константа
(т.е. время пропорционально количеству цифр в двоичной или
десятичной записи числа n
).
(3)
Время работы не больше, чем
C·r
, где C
— некоторая константа,
r
— квадратный корень из числа n
(т.е. время пропорционально квадратному корню из n
).
Какой регистр процессора содержит текущий адрес
вершины стека?
(1)
Регистр SP.
(2)
Регистр PC.
(3)
Регистр FP.
Что больше в современных архитектурах:
объем физической памяти или объем виртуальной памяти?
(1)
Объем физической памяти.
(2)
Объем виртуальной памяти.
Пусть p и q — указатель на целочисленное значение
и целочисленный массив:
int *p, q[100];
Укажите все корректные выражения языка Си среди перечисленных
ниже:
(1)
p > (q + 2)
(2)
p <= &(q[3])
(3)
p - q
(4)
p + q
Пусть описана структура
struct Tree {
struct Tree *left;
struct Tree *right;
void *value;
};
и переменые
struct Tree *t1, *t2;
int m;
Укажите все корректные выражения языка Си среди перечисленных
ниже:
(1)
t1 = t2
(2)
*t1 = *t2
(3)
t1 = t2->left
(4)
*t1 = t2->right
(5)
m = *(int*) t1->left->right->value
Завершится ли когда-нибудь выполнение цикла
в приведенном ниже фрагменте программы (
x := 1;
цикл пока x != 120
| x := x * 7;
| если x <= 490
| | то x := x - 490;
| конец если
конец цикла
!=
означает "не равно")?
(1)
Завершится.
(2)
Не завершится.
Рассмотрим следующий фрагмент программы:
#include <string.h>
#include <сtype.h>
. . .
int n, i;
char a[32];
strcpy(a, "20e");
n = 0; i = 0;
while (a[i] != 0) {
n *= 16;
if ('a' <= a[i] && a[i] <= 'f') {
n += (a[i] - 'a') + 10;
} else if (isdigit(a[i])) {
n += a[i] - '0';
}
++i;
}
Чему будет равно значение переменной
n
в результате выполнения этого фрагмента?
(1)
Значение
n
равно 270.
(2)
Значение
n
равно 298.
(3)
Значение
n
равно 524.
(4)
Значение
n
равно 526.
Выражение содержит числа, переменную
x
и знаки трех
арифметических операций +, -, × (нет операции деления);
переменная x
может использоваться многократно.
Выражение можно преобразовывать, пользуясь известными
свойствами арифметических операций. Значение переменной x
сообщается только после того, как выражение преобразовано в
удобную для вычисления форму. Какой максимальной глубины
стека достаточно, чтобы вычислить значение любого такого
выражения с помощью стекового калькулятора (записывать
промежуточные результаты на бумаге запрещено)?
(1)
Достаточно стека максимальной глубины 2.
(2)
Достаточно стека максимальной глубины 3.
(3)
Достаточно стека максимальной глубины 4.
(4)
Достаточно стека максимальной глубины 5.
В хеш-реализации множества хеш-функция принимает 4 различные
значения с равной вероятностью, т.е. множество представляется
в виде объединения четырех непересекающихся подмножеств. Пусть
множество содержит 4 элемента. Какова вероятность того,
что все подмножества будут непустыми?
(1)
Вероятность равна 0.09375
(2)
Вероятность равна 0.25
(3)
Вероятность равна 0.75
(4)
Вероятность равна 0.90625
Всегда ли равны выражения
(x + y) + y, x + (y * 2.0)
для произвольных вещественных переменных
x
, y
типа double?
(1)
Да, всегда равны.
(2)
Нет, могут быть неравными.
В каком алгоритмическом языке — в Паскале или в Си —
операция нахождения длины строки реализуется более
эффективно?
(1)
В Паскале.
(2)
В Си.
(3)
Нет существенной разницы.
Следующая программа вычисляет количество
вхождений фрагмента "xyz" в последовательность
символов:
последовательность символов p;
цел n;
символ c1, c2, c3;
. . .
n := 0;
// Инициализируем переменные c1, c2, c3 пробелами
c1 = ' '; c2 = ' '; c3 = ' ';
встать в начало последовательности p;
цикл пока есть непрочитанные элементы в посл-ти p
| c1 := c2; c2 := c3;
| прочесть очередной элемент посл-ти p в (вых: c3);
| если c1 == 'x' и c2 == 'y' и c3 == 'z'
| | то n := n + 1;
| конец если
конец цикла
ответ := n;
В ней используются четыре вспомогательные переменные
n
, c1
, c2
, c3
. Можно ли упростить
программу, использовав меньшее количество вспомогательных
переменных? (Последовательность разрешается читать только один раз.)
(1)
Можно.
(2)
Нельзя.
Пусть
// Программа Поиск
дано: цел n;
цел a[n]; // a[0] < a[1] < ... < a[n-1]
цел x; // искомый элемент
цел b, e, c;
. . . // рассматриваются исключительные случаи
утверждение: a[0] < x и x <= a[n-1]; // общий случай
b := 0; e := n - 1;
цикл пока e - b > 1
| инвариант: a[b] < x и x <= a[e];
| c := (b + e) / 2; // c -- целая часть (b+e)/2
| если x < a[c]
| | то e := c; // выбираем левую половину отрезка
| | иначе b := c; // выбираем правую половину отрезка
| конец если
конец цикла
утверждение: b == e - 1 и
a[b] < x и x <= a[e];
a
— целочисленный массив размера n
(индекс элементов меняется от 0 до n-1
),
элементы которого строго возрастают:
a[0] < a[1] <... < a[n-1]
.
Определить, содержит ли следующий фрагмент программы ошибку
(т.е. действительно ли тело цикла сохраняет инвариант):
(1)
Ошибки нет, фрагмент программы корректный.
(2)
Фрагмент программы содержит ошибку.
Как передаются аргументы функций в языке Си?
(1)
Через регистры процессора.
(2)
Через специально выделенные ячейки оперативной памяти.
(3)
Через аппаратный стек.
Какие объекты операционной системы
обычно используются для исключения
одновременного доступа к критическим данным
из разных нитей или процессов?
(1)
Семафоры.
(2)
Мьютексы.
Чему равно значение выражения
((1234 & 255) << 2)
?
(1)
Значение равно 416.
(2)
Значение равно 840.
(3)
Значение равно 856.
(4)
Значение равно 936.
Пусть описан тип R2Vector, представляющий вектор
на плоскости с вещественными координатами:
typedef struct {
double x;
double y;
} R2Vector;
также описаны три переменные
R2Vector u, v, w;
double s;
при этом переменная
v.x = (-u.y);
v.y = u.x;
w.x = u.x + v.x;
w.y = u.y + v.y;
s = sqrt(w.x * w.x + w.y * w.y);
(функция sqrt извлекает квадратный корень из вещественного
числа).
u
, v
и w
типа вектор и вещественная переменная s
:
u
содержат конкретный вектор
единичной длины. Указать, чему будет
приблизительно равно значение переменной s
в
результате выполнения следующего фрагмента программы:
(1)
Значение
s
приблизительно равно 1.
(2)
Значение
s
приблизительно равно 0.5.
(3)
Значение
s
приблизительно равно 1.41421
(корню из двух).
(4)
Значение
s
приблизительно равно 0.866
(корню из трех пополам).
Сколько раз будет выполнено тело цикла в приведенной
ниже программе? Многоточием обозначен фрагмент,
не содержащий переменной
x := 0;
цикл пока x <= 100
| . . .
| x := x + 2;
конец цикла
x
.
(1)
Тело цикла будет выполнено 49 раз.
(2)
Тело цикла будет выполнено 50 раз.
(3)
Тело цикла будет выполнено 51 раз.
Пусть в ОС Windows XP требуется открыть файл
c:\Windows\system32\drivers\hosts
как текстовый для чтения и записи. Для этого
используется следующий фрагмент программы:
FILE *f;
. . .
f = fopen(
"c:\Windows\system32\drivers\hosts",
"rt+"
);
Содержит ли он ошибку?
(1)
Нет, фрагмент кода корректный.
(2)
Да, фрагмент кода содержит ошибку.
Выражение записано с использованием обратной польской
записи:
1, 2, 3, +, *, 4, *, 5, *
Чему равняется его значение?
(1)
Значение выражения равно 100.
(2)
Значение выражения равно 140.
(3)
Значение выражения равно 160.
(4)
Значение выражения равно 180.
Текст представляет собой последовательность строк.
При этом строки можно изменять, удалять и добавлять
в любое место текста. Какая структура данных
лучше всего подходит для хранения и редактирования
такого текста?
(1)
Динамический массив.
(2)
Нагруженное множество.
(3)
Линейный двунаправленный список.
Сколько двоичных разрядов отводится для хранения мантиссы
в двоичном коде вещественного числа типа double длиной 8 байтов?
(1)
52 разряда.
(2)
55 разрядов.
Пусть
1.0 <= x и x <= 1.0e+30 и x*x < 1000.0?
x
— вещественная
переменная типа double.
Может ли произойти прерывание из-за переполнения
при вычислении логического выражения
(1)
Может.
(2)
Не может.
Является ли индуктивной функция, которая последовательности
коэффициентов многочлена по возрастанию степеней ставит
в соответствие пару чисел (степень многочлена, интеграл многочлена по отрезку [0, 1])?
(1) да, является
(2) нет, не является
(3) да, является только для многочленов степени 1
Рассмотрим следующий фрагмент программы, вычисляющей
частное
дано: целые числа a >= 0, b > 0
цел q, r, e, m;
q := 0; r := a; e := 1; m := b
цикл пока r >= b
| если 2*m <= r
| | то e := e*2; m := m*2;
| иначе если m > r
| | то e := e/2; m := m/2;
| иначе
| | утверждение: m <= r и r < 2*m
| | q := q + e; r := r - m;
| конец если
конец цикла
// q и r -- частное и остаток от деления a на b
Какое условие является инвариантом цикла?
q
и остаток r
от деления
целых чисел a
, b
:
(1)
Число
e
является степенью двойки, а также
выполняются равенства
a - q·b = r
и
m = e·b
.
(2)
Число
e
является степенью двойки, а также
выполняются равенства
a - q·m = r
и
m = e·b
.
Что содержат плавающие регистры процессора?
(1)
Целые числа.
(2)
Вещественные числа.
(3)
Адреса.
В функции
int f(int x, int y) {
int z;
. . .
}
Локальные переменные и аргументы функции
адресуются относительно регистра FP, т.е. их адреса
равны сумме содержимого FP и константы, задающей смещение.
Чему равен адрес переменной
f
языка Си описана одна целочисленная
переменная z
:
z
?
(1)
Адрес
z
равен FP.
(2)
Адрес
z
равен FP+4.
(3)
Адрес
z
равен FP+8.
(4)
Адрес
z
равен FP-4.
(5)
Адрес
z
равен FP-8.
Чему равно значение выражения 1.5e-2*1000.0?
(1)
Значение выражения равно -500.0
(2)
Значение выражения равно -1998.5
(3)
Значение выражения равно 15.0
Рассмотрим следующий фрагмент программы на Си:
static int *p = 0;
. . .
p = (int *) malloc(sizeof(int));
*p = 123;
Где хранится значение выражения "
*p
" (т.е.
число 123)?
(1)
В статической памяти.
(2)
В динамической памяти.
(3)
В стеке.
Указать, чему может быть равно значение переменной
z := 0;
цикл пока x < y
| . . .
| если z > 100
| | то
| | z := 10; x := y;
| | иначе
| | z := 20; x := y - 1;
| конец если
конец цикла
z
в результате выполнения следующего фрагмента программы:
(1)
значение
z
равно 0 или 10.
(2)
значение
z
равно 0 или 20.
(3)
значение
z
равно 10 или 20.
В операционной системе MS Windows
файл "tmp.dat" создается в результате выполнения следующего
фрагмента программы:
int a[4]; int i;
FILE *f = fopen("tmp.dat", "wb");
a[0] = 1; a[1] = 2; a[2] = 10; a[3] = 20;
for (i = 0; i < 4; ++i) {
fprintf(f, "%d\n", a[i]);
}
fclose(f);
Чему равен размер файла "tmp.dat" в байтах?
(1)
Размер файла равен 9 байтам.
(2)
Размер файла равен 10 байтам.
(3)
Размер файла равен 13 байтам.
(4)
Размер файла равен 14 байтам.
Рассмотрим фрагмент программы на языке PostScript:
10 10 moveto
10 40 lineto
10 20 moveto
30 40 lineto
15 25 moveto
30 10 lineto
stroke
Что будет нарисовано в результате его выполнения?
(1)
Буква A.
(2)
Буква K.
(3)
Буква X.
Пусть у каждой нетерминальной вершины бинарного дерева есть
ровно два сына. Пусть в дереве 123 вершины. Какова
максимальная высота такого дерева? (Высотой дерева называется
число вершин в пути максимальной длины от корня к некоторой
терминальной вершине, включая первую и последнюю вершины
пути.)
(1) максимальная высота равна 8
(2) максимальная высота равна 60
(3) максимальная высота равна 61
(4) максимальная высота равна 62
(5) максимальная высота равна 63
Что представляет собой двоичный код мантиссы
вещественного числа 0.75 типа double? Мантисса больше или равна 0 и меньше 1.
(1) двоичный код мантиссы содержит единицу в старшем разряде и нули в остальных разрядах: 100000...000
(2) двоичный код мантиссы содержит единицы в двух старших разрядах и нули в остальных разрядах: 110000...000
(3) двоичный код мантиссы содержит три единицы в старшем разряде и нули в остальных разрядах: 111000...000
Указать, что произойдет с элементами массива
вещ a[100]; вещ t; цел i;
. . .
i := 0;
цикл пока i < 50
| t := a[i];
| a[i] := a[99 - i]; a[99 - i] := t;
| i := i+1;
конец цикла
a
в результате выполнения следующего фрагмента программы:
(1) порядок элементов массива изменится на противоположный
(2) содержимое массива не изменится
(3) все элементы массива изменят знак
Диаметром множества вещественных чисел называется
максимум из абсолютных величин попарных разностей
его элементов. Рассмотрим функцию F, которая последовательности
вещественных чисел ставит в соответствие диаметр
множества ее элементов. Какая из приведенных ниже функций
на последовательностях является индуктивным расширением
функции F?
(1)
Пара (среднее арифметическое, диаметр) множества
элементов последовательности.
(2)
Пара (максимум, диаметр) множества
элементов последовательности.
Какое утверждение является инвариантом для следующего
фрагмента программы (т.е. из справедливости утверждения
до выполнения фрагмента программы вытекает справедливость утверждения
после выполнения)? Предполагается, что
цел n, k, c;
. . .
c := c * (n + 1);
c := c/(n + 1 - k);
n := n + 1;
n
не меньше k
.
Восклицательным знаком обозначается операция вычисления факториала.
(1)
Утверждение
c = n! / (k! (n-k)!)
.
(2)
Утверждение
c = (n+k)! / (n! (n-k)!)
.
(3)
Утверждение
c = (k)! / (n! (n-k)!)
.
В какой аргумент помещается результат команды с
двумя аргументами (например, сложения) при использовании
Ассемблера "Masm" фирмы Microsoft для процессоров Intel 80x86?
(1)
В первый.
(2)
Во второй.
Что является причиной асинхронного прерывания?
(1)
Состояние регистров процессора, при котором
невозможно выполнить требуемую команду (например,
обращение по несуществующему адресу памяти).
(2)
Специальный сигнал, который передается по
шине данных внешним устройством (диском, клавиатурой
и т.п.).
Что означает описание "
char *a[10]
"?
(1)
a
— указатель на массив из 10 элементов
типа char
.
(2)
a
— массив из 10 элементов
типа указатель на char
.
Прототип функции, которая ищет вхождение строки
int find(char *s1, char *s2);
функция возвращает смещение подстроки
void f(char s[1024], const char p[64]) {
int pos = find(s, p);
. . .
}
s2
в строку s1
,
выглядит следующим образом:
s2
относительно начала строки s1
в случае успеха или (-1) в случае неудачи.
Можно ли воспользоваться функцией find
в приведенном ниже
фрагменте программы
(будут ли выданы сообщения об ошибках или предупреждения
при компиляции этого фрагмента)?
(1)
Нельзя (при компиляции этого фрагмента будут выданы
сообщения об ошибках или предупреждения).
(2)
Можно (при компиляции этого фрагмента
сообщений об ошибках или предупреждений не будет).
Чему равно значение целочисленной переменной
x := 1;
цикл пока x < 11
| x := -2*x + 11;
конец цикла
x
в результате выполнения приведенного ниже фрагмента программы?
(1)
Значение
x
= 11.
(2)
Значение
x
= 15.
(3)
Значение
x
= 25.
(4)
Значение
x
= 39.
Рассмотрим следующий фрагмент программы:
#include <string.h>
. . .
int n;
char a[32];
strcpy(a, "e2e4e7e5");
strcpy(a + 2, "e3");
strcpy(a + 6, "e6d2d4");
n = strlen(a);
Чему будет равно значение переменной
n
в результате выполнения этого фрагмента?
(1)
Значение
n
равно 2.
(2)
Значение
n
равно 3.
(3)
Значение
n
равно 4.
(4)
Значение
n
равно 5.
(5)
Значение
n
равно 12.
(6)
Значение
n
равно 32.
Рассмотрим следующую реализацию функции
static void onSqrt() {
double x;
if (st_empty()) {
printf("Stack empty.\n");
return;
}
x = st_pop();
assert(x >= 0.0); // утв: x неотрицательно
st_push(sqrt(x));
display();
}
Правильно ли здесь используется конструкция «утверждение»,
которая в Си реализуется функцией
onSqrt
,
которая исполняет команду извлечения квадратного корня в проекте
«Стековый калькулятор»:
assert
?
(1)
Правильно, поскольку невозможно извлечь квадратный корень
из отрицательного числа. Следовательно, если x < 0,
то выполнение программы должно быть прекращено.
(2)
Неправильно, поскольку прекращение выполнения программы
при невыполнении утверждения должно происходить в результате
ошибки в программе, а не из-за некорректных входных данных.
Может ли в красно-черном дереве число красных вершин
более чем в два раза превышать число черных вершин?
(1)
Может.
(2)
Не может.
Можно ли сохранить произвольное целое число длиной в четыре
байта в вещественных переменных типа float и типа double без потери
точности?
(1)
Можно в обоих случаях.
(2)
Нельзя в случае float, можно в случае double.
(3)
Нельзя в обоих случаях.
Есть ли ограничение на длину текстовой строки в языке Си?
(1)
Нет, строка может иметь произвольную длину.
(2)
Да, длина строки ограничена числом 255.
(3)
Да, длина строки ограничена числом 65535.
Функция F последовательности цифр в десятичной записи числа
n
ставит в соответствие единицу, если n
делится на 14,
и ноль в противном случае. Какая из приведенных
ниже функций на последовательности десятичных цифр числа n
является индуктивным расширением функции F?
(1)
Пара (остаток от деления числа
n
на 57,
остаток от деления числа n
на 35).
(2)
Пара (остаток от деления числа
n
на 52,
остаток от деления числа n
на 21).
(3)
Остаток от деления числа
n
на 165.
Оценить сверху время работы (т.е. количество
выполнений тела цикла) алгоритма
приблизительного вычисления логарифма:
дано: x > 0, a > 1, ε > 0
надо: вычислить loga x с точностью ε
вещ y, z, t;
y := 0.0; z := x; t := 1.0;
цикл пока |t| >= ε или z <= 1.0/a или z >= a
| инвариант: ay * zt = x
| если z >= a
| | то
| | z := z/a; y := y + t;
| иначе если z <= 1.0/a
| | то
| | z := z*a; y := y - t;
| иначе
| | z := z*z; t := t/2.0;
| конец если
конец цикла
ответ := y;
(1)
Время работы не больше, чем
C·log2 [x+1]
,
где C
— некоторая константа,
[x+1]
— целая часть числа x+1
(т.е. время пропорционально количеству цифр
в двоичной или десятичной записи
целой части числа x
).
(2)
Время работы не больше, чем
C·log2 [x+1]·log2 (1/ε)
,
где C
— некоторая константа, а квадратные скобки
обозначают целую часть.
Иначе говоря, время пропорционально количеству цифр
в двоичной или десятичной записи
целой части x
, умноженному на требуемое количество значащих
цифр в дробной части результата.
(3)
Время работы не больше, чем
C·log2 [x+1] + log2 (1/ε)
,
где C
— некоторая константа, а квадратные скобки
обозначают целую часть. Иначе говоря,
время пропорционально сумме количества цифр
в двоичной или десятичной записи
целой части x
и требуемого количества значащих
цифр в дробной части результата.
Для чего используется регистр FP?
(1)
При вызове функции в регистр FP помещается адрес возврата.
(2)
В процессе работы функции регистр FP содержит базовый
адрес блока локальных переменных функции.
(3)
При вызове функции в регистре FP сохраняется
адрес вершины стека в момент вызова.
Может ли задача использовать объем виртуальной памяти,
который превышает объем физической памяти компьютера?
(1)
Может.
(2)
Не может.
Рассмотрим следующий фрагмент программы:
double *p;
int i;
. . .
p = (double*) 1000;
p += 10;
i = (int) p;
Чему будет равно значение переменной
i
в результате
выполнения этого фрагмента?
(1)
Числу 1010.
(2)
Числу 1040.
(3)
Числу 1080.
Пусть описана структура
struct Line {
int len;
char *str;
};
и переменые
struct Line s1, *s2;
int n; char c;
Укажите все корректные выражения языка Си среди перечисленных
ниже:
(1)
s1 == *s2
(2)
s1 = *s2
(3)
n = s1.len
(4)
c = s2->str[2]
Завершится ли когда-нибудь выполнение цикла
в приведенном ниже фрагменте программы?
x := 1;
цикл пока x != 144
| x := x * 13;
| если x <= 299
| | то x := x - 299;
| конец если
конец цикла
(
!=
- означает "не равно")
(1) завершится
(2) не завершится
(3) не выполнится ни разу
Рассмотрим следующий фрагмент программы:
#include <string.h>
#include <сtype.h>
. . .
int n, i;
char a[32];
strcpy(a, "375e10");
n = 0; i = 0;
while (a[i] != 0) {
if (isdigit(a[i]) && a[i] < '8') {
n *= 8;
n += a[i] - '0';
} else {
break;
}
++i;
}
Чему будет равно значение переменной
n
в результате выполнения этого фрагмента?
(1)
Значение
n
равно 245.
(2)
Значение
n
равно 253.
(3)
Значение
n
равно 293.
(4)
Значение
n
равно 315.
Выражение содержит числа, переменную
x
и знаки четырех
арифметических операций (переменная x
может
использоваться многократно). Выражение можно преобразовывать,
пользуясь известными свойствами арифметических операций.
Значение переменной x
сообщается только после того,
как выражение преобразовано в удобную для вычисления форму.
Какой максимальной глубины стека достаточно, чтобы вычислить
значение любого такого выражения с помощью стекового
калькулятора (записывать промежуточные результаты на бумаге
запрещено)?
(1)
Достаточно стека максимальной глубины 2.
(2)
Достаточно стека максимальной глубины 3.
(3)
Достаточно стека максимальной глубины 4.
(4)
Достаточно стека максимальной глубины 5.
В хеш-реализации множества хеш-функция принимает 5 различных
значений с равной вероятностью, т.е. множество представляется
в виде объединения пяти непересекающихся подмножеств. Пусть
множество содержит 3 элемента. Какова вероятность того,
что все они попадут в разные подмножества?
(1)
Вероятность равна 0.42
(2)
Вероятность равна 0.48
(3)
Вероятность равна 0.52
(4)
Вероятность равна 0.625
(5)
Вероятность равна 0.8
Всегда ли равны выражения
(x - y) + (y * 2.0), x + y
для произвольных вещественных переменных
x
, y
типа double?
(1)
Да, всегда равны.
(2)
Нет, могут быть неравными.
В каком алгоритмическом языке — в Паскале или в Си —
операция поиска конкретного символа в строке реализуется более
эффективно?
(1)
В Паскале.
(2)
В Си.
(3)
Нет существенной разницы.
На вход следующей программе передается
последовательность целых чисел в диапазоне от 0 до 9,
представляющая цифры десятичной записи целого числа
цел последовательность p; // Цифры числа n
цел s, r, d;
. . .
s := 0; r := 0;
встать в начало последовательности p;
цикл пока есть непрочитанные элементы в посл-ти p
| прочесть очередной элемент посл-ти p в (вых: d);
| s := s + d; // s -- сумма цифр
| r := (r % 10) * 10 + d; // r -- число из 2-х
конец цикла // последних цифр
ответ := ( // n делится на 75, когда
s % 3 == 0 и // s делится на 3 и
r % 25 == 0 // r делится на 25
);
В ней используются три вспомогательные переменные
n
.
Программа определяет, делится ли число n
на 75
(символом процента '%' обозначается операция
нахождения остатка от деления первого числа на второе):
s
, r
, d
. Можно ли упростить
программу, использовав меньшее количество вспомогательных
переменных? (Последовательность разрешается читать только один раз.)
(1)
Можно.
(2)
Нельзя.
Пусть
// Программа Быстрая сортировка
дано: цел n;
вещ a[n]; // вещественный массив размера n
цел m; // индекс медианы
утверждение: n >= 2 и
0 <= m и m < n;
надо: // разделить массив на три части:
// 1) слева элементы, меньшие медианы;
// 2) в центре медиана;
// 3) справа элементы, большие или равные медиане.
цел i, j, k; вещ t;
i := (-1); j := n;
цикл пока i+1 < m или m < j-1
| инвариант: a[0], a[1], ..., a[i] < a[m] и
| a[m] <= a[j], a[j+1], ..., a[n-1] и
| i < m и m < j
|
| если i+1 < m
| | то
| | если a[i+1] < a[m]
| | | то i := i+1; // расширяем левую часть
| | иначе если j-1 > m
| | | иначе
| | | утверждение: a[i+1] >= a[m];
| | | // меняем местами элементы a[i+1] и a[j-1]
| | | t := a[i+1]; a[i+1] := a[j-1]; a[j-1] := t;
| | | если j-1 == m
| | | | то m := i+1; // новое положение медианы
| | | конец если
| | | j := j-1; // расширяем правую часть
| | конец если
| | иначе
| | утверждение: j-1 > m;
| | . . . // этот случай рассматривается аналогично
| | . . . // случаю i+1 < m
| |
| конец если
конец цикла
утверждение: 0 <= m и m < n и
a[0], a[1], ..., a[m-1] < a[m] и
a[m] <= a[m+1], a[m+2], ..., a[n-1]
a
— вещественный массив размера n
(индекс элементов меняется от 0 до n-1
).
Определить, содержит ли следующий фрагмент программы ошибку
(т.е. действительно ли тело цикла сохраняет инвариант):
(1)
Ошибки нет, фрагмент программы корректный.
(2)
Фрагмент программы содержит ошибку.
Где хранятся локальные переменные функции в языке Си?
(1)
В ячейках оперативной памяти с фиксированными адресами.
(2)
В аппаратном стеке.
Что происходит при попытке захвата мьютекса нитью,
если он уже захвачен другой нитью?
(1)
Попытка захвата мьютекса завершается неуспешно с кодом ошибки
"Мьютекс уже занят", нить продолжает свою работу.
(2)
Нить приостанавливается операционной системой
до тех пор, пока мьютекс не будет освобожден другой нитью.
Чему равно значение выражения
((40 & 27) >> 2)
?
(1)
Значение равно 2.
(2)
Значение равно 3.
(3)
Значение равно 5.
(4)
Значение равно 10.
Пусть описан тип R2Vector, представляющий вектор
на плоскости с вещественными координатами,
typedef struct {
double x;
double y;
} R2Vector;
также описаны три переменные
R2Vector u, v, w;
double s;
при этом переменная
w.x = (-u.y); w.y = u.x;
s = v.x * w.x + v.y * w.y;
u
, v
и w
типа вектор
и вещественная переменная s
:
u
содержат конкретный вектор
единичной длины, а вектор v
получается из
u
вращением на 30 градусов по часовой
стрелке. Указать, чему будет приблизительно равно
значение вещественной переменной s
в результате
выполнения следующего фрагмента программы:
(1)
Значение
s
приблизительно равно 0.5.
(2)
Значение
s
приблизительно равно -0.5.
(3)
Значение
s
приблизительно равно 0.866
(корню из трех пополам).
(4)
Значение
s
приблизительно равно -0.866
(минус корню из трех пополам).
Рассмотрим два способа представления матрицы размера
4×4. В первом случае используется массив из четырех
элементов типа «массив из четырех элементов»:
double a[4][4];
Во втором случае используется массив из четырех
элементов типа «указатель на double»:
double *a[4];
при этом элемент
a[i][j].
Есть ли существенная разница в эффективности программы
в первом и втором случаях при использовании оптимизирующего
компилятора?
a[i]
содержит адрес
начала i
-й строки матрицы.
В обоих случаях обращение к элементу матрицы с индексами
i
, j
осуществляется с помощью выражения
(1)
Да, есть, первый способ эффективнее.
(2)
Да, есть, второй способ эффективнее.
(3)
Существенной разницы нет.
Какая структура данных обычно используется
для передачи заданий драйверу операционной системы?
(1)
Стек.
(2)
Очередь.
На базе какой структуры данных удобно реализовать очередь?
(1)
На базе динамического массива.
(2)
На базе двух стеков.
(3)
На базе линейного двунаправленного списка.
Содержимое одного байта можно интерпретировать
либо как число со знаком в диапазоне -128...127,
либо как неотрицательное целое число в диапазоне 0...255.
Какое неотрицательное число имеет тот же двоичный код,
что и число со знаком -5?
(1)
Число 250.
(2)
Число 251.
(3)
Число 252.
Какой диапазон кодов символов используется в кодировке ASCII (стандарт ISO-646)?
(1)
От 0 до 127.
(2)
От 0 до 255.
(3)
От 0 до 65535.
Чему равно произведение пустой последовательности
вещественных чисел?
(1)
Нулю.
(2)
Единице.
(3)
Невозможно дать разумное определение.
Укажите, в какие моменты работы программы выполняется
инвариант цикла.
(1)
Перед первым выполнением тела цикла и после
последнего выполнения тела цикла.
(2)
Перед каждым выполнением тела цикла.
(3)
Перед каждым выполнением тела цикла и после
каждого выполнения тела цикла.
Каков размер машинного слова в компьютерах
на базе процессора Intel 80386-80686?
(1)
2 байта.
(2)
4 байта.
(3)
8 байтов.
Пусть регистр R1 содержит целое число
R0 := 1;
R2 := 4;
L1:
CC0 := R2 - R1; // сравнить R2 c R1
if (gt) goto L2; // переход, если больше
R0 := R0 + 1;
R2 := R2 + R0;
R2 := R2 + R0;
R2 := R2 + 1;
goto L1;
L2:
n > 0
.
Указать, что будет содержать регистр R0 после выполнения
следующего фрагмента кода на RTL:
(1)
Целую часть от
n / 2
;
(2)
Целую часть квадратного корня из
n
.
(3)
Целую часть от
log2 n
.
Где размещаются описания прототипов глобальных функций
языка Си?
(1)
В заголовочных файлах (h-файлах).
(2)
В файлах реализации (c-файлах).
Указать, чему будет равно значение переменной
int n = 3, k = 5;
while (n != k) {
n = (n * 2) % 11;
k = (k * 7) % 11;
}
n
в результате
выполнения следующего фрагмента программы:
(1)
Значение
n
равно 2.
(2)
Значение
n
равно 3.
(3)
Значение
n
равно 4.
(4)
Значение
n
равно 10.
Обязательно ли при использовании данных типа FILE
подключать какие-либо стандартные заголовочные файлы?
(1)
Нет, поскольку этот тип является частью языка Си.
(2)
Да, нужно подключить файл stdlib.h,
содержащий описания функций и типов стандартной библиотеки ANSI.
(3)
Да, нужно подключить файл stdio.h,
содержащий описания функций и типов для поддержки
ввода-вывода стандартной библиотеки ANSI.
Даны очередь и стек элементов одного и того же типа. Можно ли
написать программу, которая удаляет из очереди предпоследний
элемент и не меняет порядка остальных элементов? При этом
разрешается использовать стек как вспомогательную структуру данных;
другими структурами (за исключением простых переменных)
пользоваться запрещено.
(1)
Можно.
(2)
Нельзя.
Элементы множества хранятся в массиве в возрастающем
порядке. Пусть множество содержит 10 элементов.
Сколько операций сравнения достаточно выполнить,
чтобы найти произвольный элемент в множестве или убедиться в его
отсутствии?
(1)
Достаточно трех операций.
(2)
Достаточно четырех операций.
(3)
Достаточно пяти операций.
(4)
Достаточно шести операций.
Целочисленная переменная
x := 30;
x := x * 5;
x
представляет короткое целое число со знаком
в диапазоне -128...127 и занимает 1 байт.
Чему равно значение x
после выполнения приведенного
ниже фрагмента программы?
(1)
Значение
x
равно -106.
(2)
Значение
x
равно -22.
(3)
Значение
x
равно 22.
Пусть значения целочисленных переменных
y != 0 и x/y <= 1
x
и y
равны 20 и 10 соответственно.
Указать значение логического выражения
(1)
Ложь.
(2)
Истина.
Что вычисляет следующий фрагмент программы?
вещ последовательность p;
вещ a, s; цел n; логическое b;
. . .
s := минус бесконечность;
n := 0; b := ложь;
встать в начало последовательности p;
цикл пока есть непрочитанные элементы в посл-ти p
| прочесть очередной элемент посл-ти p в (вых: a);
| если a >= s
| | то
| | если не b или a == s
| | | то
| | | n := n + 1;
| | конец если
| | b := истина;
| | s := a;
| иначе
| | b := ложь;
| конец если
конец цикла
ответ := n;
(1)
Максимум последовательности p.
(2)
Число строгих локальных максимумов последовательности p.
(Элемент называется строгим локальным максимумом,
если он строго больше своих соседей.)
(3)
Число нестрогих локальных максимумов последовательности p.
(Элемент называется нестрогим локальным максимумом,
если он не меньше своих соседей.)
Указать, что вычисляет следующий фрагмент программы:
дано: цел n;
цел s, k;
s := 10; k := 0;
цикл пока s <= n
| инвариант: s = 10 * (k + 1)
| s := s + 10; k := k + 1;
конец цикла
ответ := k;
(1)
Целую часть частного
n/10
.
(2)
Произведение
10·n
.
(3)
Целую часть десятичного логарифма
log10 n
.
Какой архитектуре соответствует представление целых
чисел в протоколах сети Internet?
(1)
Little Endian (как у процессоров Intel, Alpha).
(2)
Big Endian (как у процессоров Motorola, Power PC).
Пусть регистр EBX содержит адрес массива целых
чисел, регистр ECX — количество элементов массива.
Указать, что будет содержать регистр EAX
в результате выполнения следующего фрагмента кода
на Ассемблере "Masm" для процессора Intel 80x86:
mov EAX, 0 ; EAX := 0
L1: ; метка начала цикла
cmp EAX, ECX ; сравнить EAX с ECX
jge L2 ; переход, если больше или равно
mov EDX, [EBX] ; EDX := число с адресом EBX
cmp EDX, 0 ; сравнить EDX с нулем
je L2 ; переход, если равно
add EBX, 4 ; EBX := EBX+4
inc EAX ; увеличить EAX
jmp L1 ; переход на метку L1
L2: ; метка конца цикла
(1)
Число нулевых элементов массива.
(2)
Индекс первого нулевого элемента массива или
длину массива, если нулевых элементов нет.
(3)
Индекс последнего нулевого элемента массива или
длину массива, если нулевых элементов нет.
Помещается ли число 80000 в переменную типа short
в 32-разрядной архитектуре?
(1)
Да, помещается.
(2)
Нет, не помещается.
Указать, чему будет равно значение переменной
int n = 1;
int i = 3;
switch (i) {
case 4:
n *= 7;
case 3:
n *= 5;
case 2:
n *= 3;
case 1:
n *= 2;
break;
default:
n = (-1);
}
n
в результате
выполнения следующего фрагмента программы:
(1)
Значение
n
равно 3.
(2)
Значение
n
равно 5.
(3)
Значение
n
равно 7.
(4)
Значение
n
равно 15.
(5)
Значение
n
равно 30.