КИМ для проведения проверочной работы "Массивы в языке программирования Паскаль" 10 класс

Контрольно-измерительные материалы
для проведения проверочной работы
по теме «Массивы в языке программирования Паскаль»
по предмету «Информатика»
10 класс
Цель работы: проверка навыков написания программ для решения задач по
программированию учащихся десятых классов общеобразовательных учреждений.
Структура работы: работа рассчитана на четыре варианта. Общее количество заданий
в работе – 3.
Время проведения работы: проверочная работа проводится в урочное время согласно
рабочей программе. На выполнение работы отводится 45 минут.
Требования к оборудованию индивидуально распечатанная карточка.
ВАРИАНТ 1
1) Дан массив, содержащий 2014 положительных целых чисел. Напишите на одном из языков
программирования программу, которая находит в этом массиве количество локальных минимумов.
Локальным минимумом называется элемент массива, который меньше всех своих соседей. Например, в
массиве из 6 элементов, содержащем числа 4, 6, 12, 7, 3, 8, есть два локальных минимума: это элементы,
равные 4 и 3. Программа должна вывести общее количество подходящих элементов, значения элементов
выводить не нужно. Исходные данные объявлены так, как показано ниже. Запрещается использовать
переменные, не описанные ниже, но разрешается не использовать часть из описанных.
Паскаль
Алгоритмический язык
const
N=2014;
var a: array [1..N] of integer;
i, j, k: integer;
begin
for i:=1 to N do
readln(a[i]);
end.
алг
нач
цел N=2014
целтаб a[1:N]
цел i, j, k
нц для i от 1 до N
ввод a[i]
кц
кон
2) Дан массив, содержащий 70 неотрицательных целых чисел. Опишите на одном из языков
программирования алгоритм, позволяющий найти и вывести наименьшую нечётную сумму двух соседних
элементов массива. Гарантируется, что в массиве есть соседние элементы с нечётной суммой. Исходные
данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже,
но разрешается не использовать часть из них.
Паскаль
Естественный язык
const N=70;
var
a: array [1..N] of integer;
i, j, x, y: integer;
begin
for i:=1 to N do
readln(a[i]);
end.
Объявляем массив A из 70 элементов.
Объявляем целочисленные переменные I, J,
X, Y. В цикле от 1 до 70 вводим элементы
массива A с 1-го по 70-й.
...
3) Дан целочисленный массив из 30 элементов. Элементы массива могут принимать любые целые значения.
Опишите на русском языке или на одном из языков программирования алгоритм, который находит и
выводит номер элемента массива, наименее отличающегося от среднего арифметического всех его
элементов. Исходные данные объявлены так, как показано ниже. Запрещается использовать
переменные, не описанные ниже, но разрешается не использовать часть из них.
Паскаль
Естественный язык
const N=30;
var a: array [1..N] of integer;
i, k: integer;
s, min: real;
begin
for i:=1 to N do readln(a[i]);
...
end.
Объявляем массив A из 30 элементов.
Объявляем целочисленные переменные i, k.
Объявляем действительные переменные s,
min.
В цикле от 1 до 30 вводим элементы массива A
с 1-го по 30-й.
...
ВАРИАНТ 2
1) Дан массив, содержащий 2014 положительных целых чисел. Симметричной парой называются два
элемента, которые находятся на равном расстоянии от концов массива. Например, 1-й и 2014-й
элементы, 2-й и 2013-й и т. д. Порядок элементов в симметричной паре не учитывается: элементы на 1 и
2014 местах это та же самая пара, что и элементы на 2014 и 1 местах. Напишите на одном из языков
программирования программу, которая подсчитывает в массиве количество симметричных пар, у
которых сумма элементов больше 20. Программа должна вывести одно число количество отобранных
симметричных пар. Исходные данные объявлены так, как показано ниже. Запрещается использовать
переменные, не описанные ниже, но разрешается не использовать часть из описанных переменных.
Паскаль
Алгоритмический язык
const
N=2014;
var a: array [1..N] of integer;
i, j, k: integer;
begin
for i:=1 to N do
readln(a[i]);
end.
алг
нач
цел N=2014
целтаб a[1:N]
цел i, j, k
нц для i от 1 до N
ввод a[i]
кц
кон
2) Дан массив, содержащий 70 целых чисел. Опишите на одном из языков программирования
эффективный алгоритм, позволяющий найти и вывести наибольшую разность двух чисел, содержащихся
в массиве. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные,
не описанные ниже, но разрешается не использовать часть из описанных переменных.
Паскаль
Естественный язык
const N=70;
var
a: array [1..N] of integer;
i, j, x, y: integer;
begin
for i:=1 to N do
readln(a[i]);
end.
Объявляем массив A из 70 элементов.
Объявляем целочисленные переменные I, J,
X, Y. В цикле от 1 до 70 вводим элементы
массива A с 1-го по 70-й.
...
3) Дан целочисленный массив из 30 элементов. Элементы массива могут принимать произвольные целые
значения. Опишите на русском языке или на одном из языков программирования алгоритм, который
находит и выводит номера двух элементов массива, сумма которых минимальна. Исходные данные
объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но
разрешается не использовать часть из них.
Паскаль
Естественный язык
const N=30;
var a: array [1..N] of integer;
i, j, min, min2, s: integer;
begin
for i:=1 to N do readln(a[i]);
...
end.
Объявляем массив A из 30 элементов.
Объявляем целочисленные переменные i, j,
min, min2, s. В цикле от 1 до 30 вводим
элементы массива A с 1-го по 30-й.
...
ВАРИАНТ 3
1) Дан массив, содержащий 2014 положительных целых чисел. Напишите на одном из языков
программирования программу, которая находит в этом массиве количество элементов, значение которых
более чем в два раза превосходит значение предшествующего элемента. Например, для массива из 6
элементов, содержащего числа 2, 5, 10, 15, 40, 100, программа должна выдать ответ 3 (условию
соответствуют элементы со значениями 5, 40 и 100). Программа должна вывести общее количество
подходящих элементов, значения элементов выводить не нужно. Исходные данные объявлены так, как
показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не
использовать часть из описанных переменных.
Паскаль
Алгоритмический язык
const N = 2014;
var a: array [1..N] of integer;
i, j, k: integer;
begin
for i:=1 to N do
readln(a[i]);
end.
алг
нач
цел N=2014
целтаб a[1:N]
цел i, j, k
нц для i от 1 до N
ввод a[i]
кц
кон
2) Дан массив, содержащий 70 целых чисел. Опишите на одном из языков программирования алгоритм,
позволяющий найти и вывести наименьшее содержащееся в массиве положительное число, десятичная
запись которого оканчивается цифрой 7. Гарантируется, что в массиве есть хотя бы один положительный
элемент, десятичная запись которого оканчивается цифрой 7. Исходные данные объявлены так, как
показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не
использовать часть из них.
Паскаль
Естественный язык
const N=70;
var
a: array [1..N] of integer;
i, j, m: integer;
begin
for i:=1 to N do
readln(a[i]);
end.
Объявляем массив A из 70 элементов.
Объявляем целочисленные переменные I, J,
M. В цикле от 1 до 70 вводим элементы массива
A с 1-го по 70-й.
...
3) Дан целочисленный массив из 30 элементов. Элементы массива могут принимать произвольные целые
значения. Опишите на русском языке или на одном из языков программирования алгоритм, который
находит и выводит номера двух элементов массива, наименее отличающихся друг от друга. Исходные
данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже,
но разрешается не использовать часть из них.
Паскаль
Естественный язык
const N=30;
var a: array [1..N] of integer;
i, j, min, min2, s: integer;
begin
for i:=1 to N do readln(a[i]);
...
end.
Объявляем массив A из 30 элементов.
Объявляем целочисленные переменные i, j,
min, min2, s. В цикле от 1 до 30 вводим
элементы массива A с 1-го по 30-й.
...
ВАРИАНТ 4
1) Дан массив, содержащий 2014 неотрицательных целых чисел, не превышающих 10 000. Опишите на
одном из языков программирования алгоритм, позволяющий найти и вывести сумму всех содержащихся
в массиве трёхзначных чисел, десятичная запись которых оканчивается на 9, но не на 99. Если
подходящих чисел в массиве нет, программа должна вывести число –1. Исходные данные объявлены так,
как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не
использовать часть из описанных.
Паскаль
Алгоритмический язык
const N=2014;
var a: array [1..N] of integer;
i, j, s: integer;
begin
for i:=1 to N do
readln(a[i]);
...
end.
алг
нач
цел N=2014
целтаб a[1:N]
цел i, j, s
нц для i от 1 до N
ввод a[i]
кц
...
кон
2) Дан массив, содержащий 70 целых чисел. Опишите на одном из языков программирования алгоритм,
позволяющий найти и вывести наименьшее положительное нечетное число, содержащееся в массиве.
Гарантируется, что в массиве есть хотя бы одно положительное нечетное число. Исходные данные
объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но
разрешается не использовать часть из них.
Паскаль
Естественный язык
const N=70;
var
a: array [1..N] of integer;
i, j, m: integer;
begin
for i:=1 to N do
readln(a[i]);
end.
Объявляем массив A из 70 элементов.
Объявляем целочисленные переменные I, J,
M. В цикле от 1 до 70 вводим элементы массива
A с 1-го по 70-й.
...
3) Дан целочисленный массив из 30 элементов. Элементы массива могут принимать значения от
–1000 до 1000. Опишите на русском языке или на одном из языков программирования алгоритм, который
находит и выводит среднее арифметическое всех элементов массива, оканчивающихся цифрой 5.
Гарантируется, что хотя бы один такое элемент в массиве есть.
Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные
ниже, но разрешается не использовать часть из них.
Паскаль
Естественный язык
const N=30;
var a: array [1..N] of integer;
i, x, y: integer;
s: real;
begin
for i:=1 to N do readln(a[i]);
...
end.
Объявляем массив A из 30 элементов.
Объявляем целочисленные переменные i, x,
y и вещественную переменную s. В цикле от 1
до 30 вводим элементы массива A с 1-го по 30-
й.
...
Ответы
Вариант 1
k:=0;
if a[1] < a[2] then k:=k+1;
for i:=2 to N-1 do
if (a[i-1] > a[i]) and (a[i] < a[i+1]) then
k:=k+1;
if a[N-1] > a[N] then k:=k+1;
writeln(k);
const N=70;
var a: array [1..N] of integer;
і, j, x, y: integer;
begin
for і:=1 to N do readln(a[i]);
y:= 0;
for i:=1 to N-1 do begin
x:= a[i] + a[i+1];
if (x mod 2 <> 0) and
((y = 0) or (x < y))
then y:=x
end;
writeln(y)
end.
const N=30;
var a: array [1..N] of integer;
i, k: integer;
s, min: real;
begin
for i:=1 to N do readln(a[i]);
s:=0;
for i:=1 to N do s:=s+a[i];
s:=s/N;
k:=1;
for i:=2 to N do
if abs(a[i]-s) < abs(a[k]-s) then
k:=i;
writeln(k)
end.
Вариант 2
k:=0;
for i:=1 to N div 2 do
if a[i]+a[N+1-i] > 20 then
k:= k + 1;
writeln(k);
Второй вариант – использовать вспомогательную переменную j, которая будет изменяться, начиная с N, и уменьшаться
на 1 с каждым шагом цикла:
k:= 0;
j:= N;
for i:=1 to N div 2 do begin
if a[i]+a[j] > 20 then
k:= k + 1;
j:= j - 1
end;
writeln(k);
const N=70;
var a: array [1..N] of integer;
і, j, x, y: integer;
begin
for і:=1 to N do readln(a[i]);
x:= a[1]; y:= a[1];
for i:=1 to N do begin
if a[i] > x then x:= a[i];
if a[i] < y then y:= a[i];
end;
writeln(x-y)
end.
const N=30;
var a: array [1..N] of integer;
i, k, min, min2: integer;
begin
for i:=1 to N do readln(a[i]);
if a[1] < a[2] then begin
min := 1; min2:= 2
end
else begin
min:= 2; min2:= 1
end;
for i:=3 to N do
if a[i] < a[min] then begin
min2 := min;
min := i
end
else if a[i] < a[min2] then min2 := i;
writeln(min, ' ', min2)
end.
Вариант 3
k:=0;
for i:=2 to N do
if a[i] > 2*a[i-1] then
k:=k+1;
writeln(k);
Еще один вариант правильного решения, использующий деление:
k:=0;
for i:=2 to N do
if a[i]/a[i-1] > 2 then
k:=k+1;
writeln(k);
const N=70;
var a: array [1..N] of integer;
і, j, m: integer;
begin
for і:=1 to N do readln(a[i]);
m:= 0;
for i:=1 to N do
if (a[i] > 0) and (a[i] mod 10 = 7) and
((a[i] < m) or (m = 0)) then
m:= a[i];
writeln(m)
end.
const N=30;
var a: array [1..N] of integer;
i, j, min, min2, s: integer;
begin
for i:=1 to N do readln(a[i]);
min:=1; min2:=2;
s:=abs(a[1]-a[2]);
for i:=1 to N-1 do
for j:=i+1 to N do
if abs(a[i]-a[j]) < s then begin
s:=abs(a[i]-a[j]);
min:=i; min2:=j
end;
writeln(min);
writeln(min2)
end.
Вариант 4
const N=2014;
var a: array [1..N] of integer;
i, j, s: integer;
begin
for i:=1 to N do
readln(a[i]);
s:=0;
for i:=1 to 2014 do
if (100 <= a[i]) and (a[i] <= 999) and
(a[i] mod 10 = 9) and
(a[i] mod 100 <> 99)
then s := s + a[i];
if s = 0 then
writeln(-1)
else writeln(s)
end.
const N=70;
var a: array [1..N] of integer;
і, j, m: integer;
begin
for і:=1 to N do readln(a[i]);
m:= 0;
for i:=1 to N do
if (a[i] > 0) and (a[i] mod 2 = 1) and
((a[i] < m) or (m = 0)) then
m:= a[i];
writeln(m) end.
const N=30;
var a: array [1..N] of integer;
i, k, min, min2: integer;
begin
for i:=1 to N do readln(a[i]);
if a[1] < a[2] then begin
min := 1; min2:= 2
end
else begin
min:= 2; min2:= 1
end;
for i:=3 to N do
if a[i] < a[min] then begin
min2 := min;
min := i
end
else if a[i] < a[min2] then min2 := i;
writeln(min, ' ', min2) end.