ПРИМЕР ИТОГОВОГО ТЕСТА

На оценку «3» необходимо решить 7 заданий из ЧАСТИ 1 и ЧАСТИ 2 и одну задачу ЧАСТИ 3.

На оценку «4» необходимо решить 8 заданий из ЧАСТИ 1 и ЧАСТИ 2 и ДВЕ задачи ЧАСТИ 3.

На оценку «5» необходимо решить 9 заданий из ЧАСТИ 1 и ЧАСТИ 2 и две задачи ЧАСТИ 3 и одну задачу из ЧАСТИ 4.

Часть 1

А1. Определите значение целочисленных переменных a и b после выполнения фрагмента программы:

a := 3 + 3*4;

b := (a div 10) + 4;

a := (b mod 10) + 2;

b:= a + b;

a:= a mod 2 + b div 3;

1) a=4, b=14;

2) a= 24, b= 6;

3) a=5, b=12;

4) a=8, b=12.

А2. Для какого из указанных значений числа X истинно высказывание

((X < 5)→(X < 3)) Ù ((X < 2)→(X < 1))

1) 1

2) 2

3) 3

4) 4

А3. Укажите, какое логическое выражение равносильно выражению (A Ú B Ú C) ?

1) A Ú B Ú C

2) A Ù B Ù C

3) A Ú B Ú C

4) A Ù B Ù C

X

Y

Z

F

1

1

1

1

1

1

0

1

1

0

1

1

А4. Символом F обозначено одно из указанных ниже логических выражений от трех аргументов: X, Y, Z. Дан фрагмент таблицы истинности выражения F (см. таблицу справа).

Какое выражение соответствует F?

1) X Ú Y Ú Z

2) X Ù Y Ù Z

3) X Ù Y Ù Z

4) X Ú Y Ú Z

А5. Что будет выведено на печать в результате выполнения следующих операторов:

a := 5; b := 10;

write( 'сумма двух чисел ' ); write( 'a+b' );

write( ' = ', a+b );

НЕ нашли? Не то? Что вы ищете?

1) сумма двух чисел 5+10 = 15

2) сумма двух чисел a+b = 15

3) сумма двух чисел 5+10 = a+b

4) сумма двух чисел a+b = 5+10

5) ни один из ответов 1-4 не верен

А6. Чему было равно значение переменной a, если после выполнения операций

b := sqrt( sqr(a+1) );

c := - b;

a := 1 + 2 / (c-b);

она стала равна 0 ?

1) 2

2) 0

3) –1

4) любое вещ. число, не равное -1

5) ни один из ответов 1-4 не верен

А7. Чему будет равно значение А после выполнения цикла

а:=1024;

While a>0 do

a:=a / 2;

1) 0

2) 1

3) зациклится

4) 512

5) ни один из ответов 1-4 не верен

A8. Сколько раз выполнится тело цикла?

A:=32;

While A>2 do

Begin A:=A / 2; writeln(‘A’); end;

1) 8

2) 6

3) 5

4) 4

5) 3

Часть 2

В1. Определите значение переменной m после выполнения фрагмента алгоритма.

В2. Что будет выведено, если n=6?

For i:= 1 to n do A[i] := i;

For i:= 1 to n do begin a[i] := a[7 - i]; write(a[i]:4) end;

В3. Что будет выведено, если n=8?

For i:= 1 to n do A[i] := n – i + 1;

For i:= 1 to n div 2 - 1 do b[i]:= a[i*2] + a[i*2+1];

For i:= 1 to (n - 1) div 2 do writeln (b[i]:4);

Часть 3

C1. Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (x, y – действительные числа) и определяет принадлежность точки заштрихованной области, включая ее границы. Программист торопился и написал программу неправильно. Вот она:

var x,y: real;

begin

readln(x, y);

if x*x+y*y >= 4 then

if x <= 2 then

if y <= x then

write('принадлежит')

else

write('не принадлежит')

end.

Последовательно выполните следующее:

1) Приведите пример таких чисел x, y, при которых программа неверно решает поставленную задачу.

2) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).

C2. Напишите программу для решения задачи.

В первой строке вводится количество целых чисел N. Далее следуют N строк с числами (n<100). Сформировать массив из нечетных положительных чисел. Отсортировать массив по убыванию (невозрастанию) и вывести его с указанием номеров элементов массива.

Например.

Ввод

Вывод

11

3

2

4

15

6

7

8

11

2

7

1

A[1]=15

A[2]=11

A[3]=7

A[4]=7

A[5]=3

A[6]=1

С3. Считайте массив из n целых чисел с клавиатуры. Поменяйте местами минимальный и максимальный элементы.

С4. Сформируйте массив из N целых чисел из случайных чисел в диапазоне от -5 до 15. Необходимо упорядочить элементы массива между максимальным и минимальным элементами массива.

С5. Сформируйте массив размерности n из случайных чисел в диапазоне от -10 до 10. Удалите все неположительные элементы массива.

С6. Дан целочисленный массив размерности n. Вставьте после каждого четного числа больше 2 число 0.

Например. A[] ПОЛУЧИТЬ МАССИВ A[8 0]

Часть 4

D1 В некотором вузе абитуриенты проходили предварительное тестирование, по результатам которого они могут быть допущены к сдаче вступительных экзаменов в первом потоке. Тестирование проводится по двум предметам, по каждому предмету абитуриент может набрать от 0 100 баллов. При этом к сдаче экзаменов в первом потоке допускаются абитуриенты, набравшие по результатам тестирования не менее 30 баллов по каждому из двух предмета. На вход программы подаются сведения о результатах предварительного тестирования. Известно, что общее количество участников тестирования не превосходит 500.

В первой строке вводится количество абитуриентов, принимавших участие в тестировании, N. Далее следуют N строк, с набранными баллами одного абитуриента.

Напишите программу, которая выведет:

а) максимальный и минимальный баллы набранные абитуриентами по каждому предмету, допущенными к экзаменам,

в) подсчитывает число допущенных к экзаменам абитуриентов.

ПРИМЕР РАБОТЫ ПРОГРАММЫ

ВХОДНЫЕ ДАННЫЕ

ВЫХОДНЫЕ ДАННЫЕ

8

45  50

46  12

56  78

89  56

90  99

12  32

33  25

33 34

Min 1 = 33

Min 2 = 34

Max 1= 90

Max2 = 99

Kol = 5

D2. В командных олимпиадах по программированию для решения предлагается не более 12 задач. Команда может решать предложенные задачи в любом порядке. Подготовленные решения команда посылает в единую проверяющую систем соревнований. Вам предлагается написать эффективную, в том числе и по используемой памяти, программу, которая будет статистически обрабатывать пришедшие запросы на проверку, чтобы определить популярность той или иной задачи. Следует учитывать, что количество запросов в списке может быть очень велико, например, когда олимпиада проводится через Интернет. Перед текстом программы кратко опишите используемый вами алгоритм решения задачи. На вход программе в первой строчке подается количество пришедших запросов N. В каждой из последующих N строк записан номер задачи от 1 до 12. Пример входных данных:

6

1

2

1

1

5

2

Программа должна вывести список всех задач, встречающихся в запросах, в порядке возрастания (неубывания) количества запросов по ней с указанием этого количества запросов. Каждая задача должна быть выведена только один раз. Пример выходных данных для приведенных входных данных:

5 1

2 2

1 3

D3. По каналу связи передается последовательность положительных целых чисел, все числа не превышают 10, их количество заранее неизвестно. Каждое число передается отдельно. Признаком конца передаваемой последовательности является число 0. После числа 0 передается контрольное значение – наибольшее число R, удовлетворяющее следующим условиям:

1)  R – произведение двух различных переданных элементов последовательности («различные» означает, что не рассматриваются квадраты переданных чисел, произведения различных, но равных по величине элементов допускаются);

2)  R делится на 6

Напишите эффективную программу, которая получает последовательность чисел и следующие за ней признак конца и контрольное значение, а также проверяет правильность контрольного значения. Программа должна напечатать отчет по следующей форме:

Получено .. чисел

Полученное контрольное значение: ….

Вычисленное контрольное значение:…

Контроль пройден (или – контроль не пройден)

Размер памяти, которую использует Ваша программа, не должен зависеть от длины переданной последовательности чисел. Перед текстом программы кратко опишите используемый вами алгоритм решения задачи.

Пример входных данных:

6

1

3

4

2

6

0

24

Пример выходных данных для приведенного выше примера входных данных:

Получено 6 чисел

Полученное контрольное значение: 24

Вычисленное контрольное значение: 24

Контроль пройден.