Одномерный целочисленный массив. В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 1, 2, 5, 8, 9, 3, 4, 0, 7, 6 соответственно, т.е. A[0] = 1, A[1] = 2 и т.д. Определите значение переменной j после выполнения следующего фрагмента программы (записанного ниже на пяти зыках программирования).
Демонстрационный вариант Единый государственный экзамен ЕГЭ 2017 г. – задание №19
Решение:
Данный алгоритм меняет местами элементы с номером j и j-1 до тех пор, пока элемент A[j] не станет больше либо равен элементу A[j-1], при каждой такой перестановке j уменьшается на единицу.
A[0]=1 A[3]=8 A[6]=4 A[9]=6
A[1]=2 A[4]=9 A[7]=0
A[2]=5 A[5]=3 A[8]=7
Сначала тройка (j=5, A[ j ]=A[5]=3) сравнивается с девяткой (A[ j-1 ]=A[4]=9), поскольку тройка меньше девятки они меняются местами (A[5]=9, A[4]=3), j=4. Аналогично тройка (j=4, A[ j ]=A[4]=3) меняется местами с восьмёркой (A[3]=8), j=3 и пятёркой (A[2]=5), j=2. Затем тройка сравнивается с двойкой, поскольку тройка больше двух алгоритм завершает работу. Всего было 3 захода в цикл, следовательно, после исполнения данного фрагмента программы j станет равным двум.
1
2
5
8
9
3
4
0
7
6
j = 5
3 < 9
3
9
j = 4
3 < 8
3
8
j = 3
3 < 5
3
5
j = 2
3 < 2
Ответ: 2
Демонстрационный вариант Единый государственный экзамен ЕГЭ 2016 г. – задание №19
В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 4, 7, 3, 8, 5, 0, 1, 2, 9, 6 соответственно, т.е. A[0] = 4, A[1] = 7 и т.д.
Определите значение переменной c после выполнения следующего фрагмента этой программы (записанного ниже на пяти языках программирования).
Данный алгоритм меняет местами элементы A[0] и А[ i ] и увеличивает значение c на 1, если А[ i ]< A[0].
A[0]=4 A[3]= 8 A[6]=1 A[9]=6
A[1]=7 A[4]= 5 A[7]=2
A[2]=3 A[5]=0 A[8]=9
Сначала четверка (A[0]=4 ) сравнивается с семеркой ( i=1,А[ i ]= A[1]=7),
7!<4
Дальше четверка (A[0]=4 ) сравнивается с тройкой ( i=2,А[ i ]= A[2]=3),поскольку тройка меньше четверки они меняются местами (A[0]=3, A[2]=4), c=0+1=1.
Аналогично тройка сравнивается с A[3]= 8, A[4]= 5, A[5]=0 .
8!<3
5!<3
0<3 → 3 и 0 меняются местами (A[0]=0, A[5]=3), c=.1+1=2.
0-наименьшее число в массиве, c=2.
Ответ: 2
В программе описан одномерный целочисленный массив с индексами от 0 до 10. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:
Паскаль
Си
Python
for i:=0 to 10 do
A[i]:= i + 1;
for i:=10 downto 0 do
A[i]:= A[10-i];
for (i = 0;i <= 10;i++)
A[i] = i+1;
for (i = 10;i >= 0;i–)
A[i] = A[10-i];
for i in range(0,11):
A[i] = i+1
for i in range(10, -1, -1):
A[i] = A[10-i]
Чему будут равны элементы этого массива?
1) 10 9 8 7 6 5 4 3 2 1 0
2) 11 10 9 8 7 6 5 4 3 2 1
3) 11 10 9 8 7 6 7 8 9 10 11
4) 1 2 3 4 5 6 5 4 3 2 1
Решение:
0
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
9
10
1
1
2
3
4
5
6
7
8
9
2
1
1
2
3
4
5
6
7
8
3
2
1
1
2
3
4
5
6
7
4
3
2
1
1
2
3
4
5
6
5
4
3
2
1
1
2
3
4
5
6
5
4
3
2
1
1
2
3
4
5
6
5
4
3
2
1
1
2
3
4
5
6
5
4
3
2
1
1
2
3
4
5
6
5
4
3
2
1
1
2
3
4
5
6
5
4
3
2
1
1
2
3
4
5
6
5
4
3
2
1
Ответ: 4
В программе описан одномерный целочисленный массив с индексами от 0 до 10. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:
Паскаль
Си
Python
for i:=0 to 10 do A[i]:=i;
for i:=0 to 10 do begin
A[10-i]:=A[i];
A[i]:=A[10-i];
end;
for (i = 0;i <= 10;i++)
A[i] = i;
for (i = 0;i <= 10;i++){
A[10-i]=A[i];
A[i]=A[10-i];
}
for i in range(0,11):
A[i] = i
for i in range(0,11):
A[10-i]=A[i]
A[i]=A[10-i]
Чему будут равны элементы этого массива?
1) 10 9 8 7 6 5 4 3 2 1 0
2) 0 1 2 3 4 5 6 7 8 9 10
3) 10 9 8 7 6 5 6 7 8 9 10
4) 0 1 2 3 4 5 4 3 2 1 0
Решение:
0
1
2
3
4
5
6
7
8
9
10
0
1
2
3
4
5
6
7
8
9
10
0
1
2
3
4
5
6
7
8
9
0
0
1
2
3
4
5
6
7
8
1
0
0
1
2
3
4
5
6
7
2
1
0
0
1
2
3
4
5
6
3
2
1
0
0
1
2
3
4
5
4
3
2
1
0
0
1
2
3
4
5
4
3
2
1
0
Ответ: 4
В программе описан одномерный целочисленный массив с индексами от 0 до 10 и целочисленные переменные k, i. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:
Паскаль
Си
Python
for i:=0 to 10 do A[i]:=i*i;
k:=A[10];
for i:=0 to 9 do
A[i]:=A[i+1];
A[0]:=k;
for (i = 0;i <= 10;i++)
A[i]=i*i;
k:=A[10];
for (i = 0;i <= 9;i++){
A[i]=A[i+1];
A[0]=k;
}
for i in range(0,11):
A[i]=i*i
k=A[10]
for i in range(0,10):
A[i]=A[i+1]
A[0]=k
Чему будут равны элементы этого массива?
1) 100 0 1 4 9 16 25 36 49 64 81
2) 100 4 9 16 25 36 49 64 81 100 100
3) 1 4 9 16 25 36 49 64 81 100 100
4) 1 4 9 16 36 49 64 81 100 0
Решение:
0
1
2
3
4
5
6
7
8
9
10
0
1
4
9
16
25
36
49
64
81
100
k=100
1
4
9
16
25
36
49
64
81
1
4
9
16
25
36
49
64
81
100
100
100
4
9
16
25
36
49
64
81
100
100
A[0]=100
Ответ: 2
Значения двух массивов A и B с индексами от 1 до 100 задаются при помощи следующего фрагмента программы:
Паскаль
Си
Python
for i:=1 to n do
A[i]:=i*i;
for i:=1 to n do
B[i]:=A[i]-100;
for (i = 1;i <= n;i++)
A[i]=i*i;
for (i = 1;i <= n;i++){
B[i]=A[i]-100;
}
for i in range(0,n+1):
A[i]=i*i
for i in range(0,n+1):
B[i]=A[i]-100
Сколько положительных значений будет в массиве B?
Решение:
A
1
2
3
…
10
11
12
…
100
A
1
4
9
100
121
144
…
10000
B
-99
-96
-91
0
21
44
…
9900
B[i]:=A[i]-100;
100-10=90
Ответ: 90
Значения элементов двумерного массива А были равны 0. Затем значения некоторых элементов были изменены (см. представленный фрагмент программы:
Паскаль
Си
Python
n := 0;
for i:=1 tо 5 do
for j:=1 tо 6-i do begin
n := n + 1;
A[i,j] := n;
end;
n = 0;
for (i = 1;i <= 5;i++)
for (j = 1;j <= 6-i;j++){
n = n + 1;
A[i][j] = n;
}
n = 0
for i in range(1,6):
for j in range(1,6-i+1):
n = n + 1
A[i][j] = n
Какой элемент массива будет иметь в результате максимальное значение?
1) A[1,1] 2) A[1,5] 3) A[5,1] 4) A[5,5]
Решение:
A[1,1]=1
A[1,2]=2
A[1,3]=3
A[1,4]=4
A[1,5]=5
A[2,1]=6
A[2,2]=7
A[2,3]=8
A[2,4]=9
A[3,1]=10
A[3,2]=11
A[3,3]=12
A[4,1]=13
A[4,2]=14
A[5,1]=15
Ответ: 3
В программе описан одномерный целочисленный массив с индексами от 0 до 10. Ниже представлен фрагмент программы, обрабатывающей данный массив:
Паскаль
Си
Python
s:= 0;
n:= 10;
for i:=0 to n do begin
if і = n-i then s:=s+A[i]+A[i+1];
end;
s = 0;
n = 10;
for (i = 0;i <= n;i++)
if (і == n-i)
s=s+A[i]+A[i+1];
s = 0
n = 10
for i in range(0,n+1):
if і == n-i:
s=s+A[i]+A[i+1];
В начале выполнения этого фрагмента в массиве находились числа 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, т. е. А[0]=0, А[1]=10 и т. д. Чему будет равно значение переменной s после выполнения данной программы?
Решение:
n:= 10;
if і = n-i then => і = 10-i = > i=5
s:=s+A[i]+A[i+1] = 0 + 50 + 60 = 110
Ответ: 110
В программе описан одномерный целочисленный массив с индексами от 0 до 10. Ниже представлен фрагмент программы, обрабатывающей данный массив:
Паскаль
Си
Python
n:= 10; s:= 0;
for i:=1 to n do begin
if A[i]-A[i-1] < i then
s:= s + i;
end;
n = 10; s = 0;
for (i = 1;i <= n;i++)
if (A[i]-A[i-1] < i)
s = s + i;
n = 10
s = 0
for i in range(0,n+1):
if A[i]-A[i-1] < i:
s = s + i
В начале выполнения этого фрагмента в массиве находились числа Фибоначчи: 1,1,2,3,5,8,13,21,34,55,89, т.е. A[0]=1, A[1]=1, A[2]=2 и т.д. Чему будет равно значение переменной s после выполнения данной программы?
Решение:
0
1
2
3
4
5
6
7
8
9
10
1
1
2
3
5
8
13
21
34
55
89
i
1
2
3
4
5
6
7
8
9
10
A[i]-A[i-1] < i
1-1<1
2-1<2
3-2<3
5-3<4
8-5<5
13-8<6
s
0
1
3
6
10
15
21
Ответ: 21
В программе описан одномерный целочисленный массив с индексами от 1 до 10. Ниже представлен фрагмент программы, обрабатывающей данный массив:
Паскаль
Си
Python
n := 10;
for i := 1 to n do begin
A[n+1-i] := 2*A[i];
end;
n = 10
for (i = 1;i <= n;i++)
A[n+1-i] = 2*A[i];
n = 10
for i in range(0,n+1):
A[n+1-i] = 2*A[i]
В начале выполнения этого фрагмента в массиве находились числа: 1,2,4,8,16,32,64,128,256,512, т.е. A[i]=2k-1, k=1, …10. Укажите значение из предложенного списка, которое после выполнения указанного фрагмента программы имеют два или более рассмотренных в этом фрагменте элемента массива. Если таких чисел несколько, укажите наименьшее из них.
Решение:
1
2
3
4
5
6
7
8
9
10
1
2
4
8
16
32
64
128
256
512
A[n+1-i] := 2*A[i]
2
A[10+1-1] := 2*1=A[10]=2
4
A[10+1-2] := 2*2=A[9]=4
8
A[10+1-3] := 2*4=A[8]=8
16
A[10+1-4] := 2*8=A[7]=16
32
A[10+1-5] := 2*16=A[6]=32
64
A[10+1-6] := 2*32=A[5]=64
32
A[10+1-7] := 2*16=A[4]=32
16
A[10+1-8] := 2*8=A[3]=16
8
A[10+1-9] := 2*4=A[2]=8
4
8
16
32
64
32
16
8
4
2
A[10+1-10] := 2*2=A[1]=4
Если таких чисел несколько, укажите наименьшее из них = 4
Ответ: 4
В программе описан одномерный целочисленный массив с индексами от 0 до 10. Ниже представлен записанный на разных языках программирования фрагмент одной и той же программы, обрабатывающей данный массив:
Паскаль
Си
Python
s:=0;
n:=10;
for i:=0 to n-1 do begin
s:=s+A[i]-A[i+1]
end;
s=0;
n=10;
for (i = 0;i <= n-1;i++)
s=s+A[i]-A[i+1];
s=0
n=10
for i in range(0,n):
s=s+A[i]-A[i+1]
В начале выполнения этого фрагмента в массиве находились двухзначные натуральные числа. Какое наибольшее значение может иметь переменная s после выполнения данной программы?
Решение:
0
1
2
3
4
5
6
7
8
9
10
99
10
10
10
10
10
10
10
10
10
10
s:=s+A[i]-A[i+1]
s=0+99-10=89
s=89+10-10=89…
Ответ: 89
В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 7; 5; 3; 4; 8; 8; 9; 7; 6; 2 соответственно, т.е. A[0] = 7; A[1] = 5 и т.д. Определите значение переменной c после выполнения следующего фрагмента программы:
Паскаль
Си
Python
c := 0;
for i := 1 to 9 do
if A[i-1] < A[i] then begin
t:= A[i];
A[i]:= A[i – 1];
A[i-1]:= t
end
else
c:= c + 1;
c = 0;
for (i = 1;i <= 9;i++)
if (A[i-1] < A[i]){
t = A[i];
A[i] = A[i – 1];
A[i-1] = t;
}else
c = c + 1;
c = 0
for i in range(1,10):
if A[i-1] < A[i]:
t = A[i]
A[i] = A[i – 1]
A[i-1] = t
else:
c = c + 1
Решение:
if A[i-1] < A[i] then begin
t:= A[i];
A[i]:= A[i – 1];
A[i-1]:= t
Если текущее число больше предыдущего, это меняет местами. Если нет, c увеличивается.
0
1
2
3
4
5
6
7
8
9
7
5
3
4
8
8
9
7
6
2
7
5
c=1
5
3
c=2
4
3
8
3
8
3
9
3
7
3
6
3
3
2
c=3
Ответ: 3
Ниже представлен фрагмент программы, обрабатывающей одномерный целочисленный массив с индексами от 0 до 10. Известно, что в начале выполнения этого фрагмента в массиве находилась возрастающая последовательность чисел, то есть A[0] < A[1] < … < A[10]. Какое наибольшее значение может иметь переменная s после выполнения данной программы?
Паскаль
Си
Python
s := 27;
n := 10;
for i:=0 to n-1 do begin
s:=s+A[i]-A[i+1]+2
end;
s = 27;
n = 10;
for (i = 0;i <= n-1;i++)
s=s+A[i]-A[i+1]+2;
s = 27
n = 10
for i in range(0,n):
s=s+A[i]-A[i+1]+2
Решение:
0
1
2
3
4
5
6
7
8
9
10
0
1
2
3
4
5
6
7
8
9
10
s:=s+A[i]-A[i+1]+2
чтобы сделать с самым большим, то разница должна быть минимальной.