Работа с массивами в языке программирования. Решение задач. 11 класс
Работа с массивами в языке программирования
Что нужно знать:
работу цикла for (цикла с переменной)
массив – это набор однотипных элементов, имеющих общее имя и расположенных в памяти рядом
для обращения к элементу массива используют квадратные скобки, запись A[i] обозначает элемент массива A с номером (индексом) iПример 1
Значения двух массивов A[1..100] и B[1..100] задаются с помощью следующего фрагмента программы:
for n:=1 to 100 do
A[n] := (n-80)*(n-80);
for n:=1 to 100 do
B[101-n] := A[n];
Какой элемент массива B будет наибольшим?
1) B[1]2) B[21]
3) B[80]4) B[100]
Пример 2
Значения двух массивов A и B с индексами от 1 до 100 задаются при помощи следующего фрагмента программы:
for i:=1 to n do
A[i]:=i*i;
for i:=1 to n do
B[i]:=A[i]-100;
Сколько положительных значений будет в массиве B?
1) 02) 10 3) 904) 91
Пример 3
В программе описан одномерный целочисленный массив A с индексами от 0 до 10. Ниже представлен фрагмент этой программы, в котором значения элементов массива сначала задаются, а затем меняются.
for i:=0 to 10 do
A[i]:=2*i;
for i:=0 to 4 do begin
A[10-i]:=A[i]-1;
A[i]:=A[10-i]-1;
end;
Чему будут равны элементы этого массива?
1) 0 2 4 6 8 10 12 14 16 18 20
2) 19 17 15 13 11 10 -1 1 3 5 7
3) -2 0 2 4 6 10 7 5 3 1 -1
4) -1 1 3 5 7 9 11 13 15 17 19
1 2 … 21 … 80 … 100
A 792 782 592 0 202
B 202 0 592 792
запишем элементы массива Аанализ 2 цикла
n:=1, B[101-1] := A[1], B[100] := A[1]=792,
n:=21, B[101-21] := A[21], B[80] := A[21]=592,
n:=80, B[101-80] := A[80], B[21] := A[80]=0,
n:=100, B[101-100] := A[100], B[1] := A[100]=202.
Ответ: 4
1. запишем некоторые элементы массива АA[1]=1, A[2]=4... A[10]=100, A[11]=121,…
2. запишем некоторые элементы массива ВВ[1]=-99, В[2]=-96… В[10]=0, В[11]=21…
Значит, положительные значения принимают элементы массива в, начиная с 11 по 100.
Кол-во эл-тов=(100-11)+1=90
Ответ:3 1.анализ первого цикла
i0 1 2 3 4 5 6 7 8 9 10
A[i] 0 2 4 6 8 10 12 14 16 18 20
2. анализ второго цикла
i0 1 2 3 4 5 6 7 8 9 10
A[i] -2 0 2 4 6 10 7 5 3 1 -1
i:=0, A[10]:=A[0]-1= - 1; A[0]:=A[10-0]-1= -1-1=-2;
Обратите внимание, что значение A[10] уже поменялось, и равно оно не 20, а -1!
i:=1, A[9]:=A[1]-1=2-1=1; A[1]:=A[10-1]-1=1-1=0;
i:=2, A[8]:=A[2]-1=4-1=3; A[2]:=A[10-2]-1=3-1=2;
i:=3, A[7]:=A[3]-1=6-1=5; A[3]:=A[10-3]-1=5-1=4;
i:=4, A[6]:=A[4]-1=8-1=7; A[4]:=A[10-4]-1=7-1=6;
пятый элемент не меняется, он равен 10.
Ответ: 3
Решение информационных задач
В программе описан одномерный целочисленный массив с индексами от 0 до 10. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:
for i:=0 to 10 do
A[i]:= i + 1;
for i:=1 to 10 do
A[i]:= A[i-1];
Как изменяются элементы этого массива?
1) все элементы, кроме последнего, сдвигаются на 1 элемент вправо
2) все элементы, кроме первого, сдвигаются на 1 элемент влево
3) все элементы окажутся равны 1
4) все элементы окажутся равны своим индексам
Решение: 1.анализ первого цикла
i0 1 2 3 4 5 6 7 8 9 10
A[i] 1 2 3 4 5 6 7 8 9 10 11
2. анализ второго цикла
i0 1 2 3 4 5 6 7 8 9 10
A[i] 1 1 1 1 1 1 1 1 1 1 1
i:=1, A[1]:= A[0]=1;
i:=2, A[2]:= A[1]=1;
i:=3, A[3]:= A[2]=1;
i:=4, A[4]:= A[3]=1;
i:=5, A[5]:= A[4]=1;
i:=6, A[6]:= A[5]=1;
i:=7, A[7]:= A[6]=1;
i:=8, A[8]:= A[7]=1;
i:=9, A[9]:= A[8]=1;
i:=10, A[10]:= A[9]=1;
элемент A[0] не меняется и равен 1
Ответ: 3 В программе описан одномерный целочисленный массив с индексами от 0 до 10. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:
for i:=0 to 10 do
A[i]:= i + 1;
for i:=10 downto 0 do
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
Решение: 1.анализ первого цикла
i0 1 2 3 4 5 6 7 8 9 10
A[i] 1 2 3 4 5 6 7 8 9 10 11
2. анализ второго цикла
i0 1 2 3 4 5 6 7 8 9 10
A[i] 1 2 3 4 5 6 5 4 3 2 1
i:=10, A[10]:= A[0]=1;
i:=9, A[9]:= A[1]=2;
i:=8, A[8]:= A[2]=3;
i:=7, A[7]:= A[3]=4;
i:=6, A[6]:= A[4]=5;
i:=5, A[5]:= A[5]=6;
обратим внимание, что переменные с 10 по 6 уже поменяли свои значения, поэтому работаем по 2 таблице.
i:=4, A[4]:= A[6]=5;
i:=3, A[3]:= A[7]=4;
i:=2, A[2]:= A[8]=3;
i:=1, A[1]:= A[9]=2;
i:=0, A[0]:= A[10]=1;
Ответ: 4
В программе описан одномерный целочисленный массив с индексами от 0 до 10. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:
for i:=0 to 10 do
A[i]:= i + 1;
for i:=0 to 10 do
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
3) 11 10 9 8 7 6 7 8 9 10 11
4) 10 9 8 7 6 5 6 7 8 9 10
Решение: 1.анализ первого цикла
i0 1 2 3 4 5 6 7 8 9 10
A[i] 1 2 3 4 5 6 7 8 9 10 11
2. анализ второго цикла
i0 1 2 3 4 5 6 7 8 9 10
A[i] 11 10 9 8 7 6 7 8 9 10 11
i:=0, A[0]:= A[10]=11;
i:=1, A[1]:= A[9]=10;
i:=2, A[2]:= A[8]=9;
i:=3, A[3]:= A[7]=8;
i:=4, A[4]:= A[6]=7;
i:=5, A[5]:= A[5]=6;
обратим внимание, что переменные с 0 по 5уже поменяли свои значения, поэтому работаем по 2 таблице.
i:=6, A[6]:= A[4]=7;
i:=7, A[7]:= A[3]=8;
i:=8, A[8]:= A[2]=9;
i:=9, A[9]:= A[1]=10;
i:=10, A[10]:= A[0]=11;
элемент A[0] не меняется и равен 1
Ответ: 3
В программе описан одномерный целочисленный массив с индексами от 0 до 10. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:
for i:=0 to 10 do
A[i]:= i - 1;
for i:=1 to 10 do
A[i-1]:= A[i];
A[10] := 10;
Как изменяются элементы этого массива?
1) все элементы, кроме последнего, окажутся равны между собой
2) все элементы окажутся равны своим индексам
3) все элементы, кроме последнего, сдвигаются на один элемент вправо
4) все элементы, кроме последнего, уменьшаются на единицу
Решение: 1.анализ первого цикла
i0 1 2 3 4 5 6 7 8 9 10
A[i] -1 0 1 2 3 4 5 6 7 8 9
2. анализ второго цикла
i0 1 2 3 4 5 6 7 8 9 10
A[i] 0 1 1 3 4 5 6 7 8 9 10
i:=1, A[0]:= A[1]=0;
i:=2, A[1]:= A[2]=1;
i:=3, A[2]:= A[3]=2;
i:=4, A[3]:= A[4]=3;
i:=5, A[4]:= A[5]=4;
…………………………….
i:=9, A[8]:= A[9]=10;
i:=10, A[9]:= A[10]=9;
элемент A[10] не меняется и равен 10 по условию
Ответ: 2 В программе описан одномерный целочисленный массив с индексами от 0 до 10 и целочисленные переменные k, i. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:
for i:=0 to 10 do A[10-i]:=i;
k:=A[9];
for i:=0 to 9 do
A[10-i]:=A[9-i];
A[1]:=k;
Чему будут равны элементы этого массива?
1) 9 8 7 6 5 4 3 2 1 0 10
2) 10 1 9 8 7 6 5 4 3 2 1
3) 0 10 9 8 7 6 5 4 3 2 1
4) 10 0 9 8 7 6 5 4 3 2 1
Решение: 1.анализ первого цикла
i0 1 2 3 4 5 6 7 8 9 10
A[i] 10 9 8 7 6 5 4 3 2 1 0
2. анализ второго цикла
i0 1 2 3 4 5 6 7 8 9 10
A[i] 10 1 9 8 7 6 5 4 3 2 1
k:=A[9]=1; переменная стоит до цикла и больше не меняется
i:=0, A[10]:= A[9]=1;
i:=1, A[9]:= A[8]=2;
i:=2, A[8]:= A[7]=3;
i:=3, A[7]:= A[6]=4;
i:=4, A[6]:= A[5]=5;
i:=5, A[5]:= A[4]=6;
i:=6, A[4]:= A[3]=7;
i:=7, A[3]:= A[2]=8;
i:=8, A[2]:= A[1]=9;
i:=9, A[1]:= A[0]=10;
A[1]:=k=1 данная строка работает только в этом случае
A[0]:=10 значение не поменялось
Ответ: 2
В программе описан одномерный целочисленный массив A с индексами от 0 до 10. Ниже представлен фрагмент этой программы, в котором значения элементов массива сначала задаются, а затем меняются.
for i:=0 to 10 do
A[i]:=3*i;
for i:=1 to 10 do
A[i]:=A[i] mod 3;
Чему будут равны элементы этого массива?
1) Все элементы будут равны 3.
2) Все элементы будут равны 1.
3) Все элементы будут равны 0.
4) Все элементы будут равны своим индексам.
Решение: 1.анализ первого цикла
i0 1 2 3 4 5 6 7 8 9 10
A[i] 0 3 6 9 12 15 18 21 24 27 30
2. анализ второго цикла
i0 1 2 3 4 5 6 7 8 9 10
A[i] 0 0 0 0 0 0 0 0 0 0 0
i:=1, A[1]:= A[1] mod 3=0, 0 mod 3=0
i:=2, A[2]:= A[2] mod 3=0, 3 mod 3=0
i:=3, A[3]:= A[3] mod 3=0, 9 mod 3=0
…………………………………………..
i:=10, A[10] mod 3=0, 30 mod 3=0
Ответ: 3
Самостоятельная работа по теме «Работа с массивами в языке программирования»
Вариант 1
Значения двух массивов A[1..100] и B[1..100] задаются с помощью следующего фрагмента программы:
for n:=1 to 100 do
A[n] := n - 10;
for n:=1 to 100 do
B[n] := A[n]*n;
Сколько элементов массива B будут иметь положительные значения?
1) 10 2) 50 3) 90 4) 100
2. В программе описан одномерный целочисленный массив с индексами от 0 до 10. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:
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;
Чему будут равны элементы этого массива?
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 до 10 и целочисленные переменные k, i. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:
for i:=0 to 10 do A[i]:=i;
for i:=0 to 4 do begin
k:=A[2*i];
A[2*i]:=A[2*i+1];
A[2*i+1]:=k;
end;
Чему будут равны элементы этого массива?
1) 5 6 7 8 9 0 1 2 3 4 10
2) 10 9 8 7 6 5 4 3 2 1 0
3) 0 1 2 3 4 5 4 3 2 1 0
4) 1 0 3 2 5 4 7 6 9 8 10
Значения двух массивов A и B с индексами от 1 до 100 задаются при помощи следующего фрагмента программы:
for i:=1 to n do
A[i]:=(i-75)*(i-75);
for i:=1 to n do
B[101-i]:=A[i];
Какой элемент массива B будет наибольшим?
1) B[1]2) B[26] 3) B[75] 4) B[100]
В программе описан одномерный целочисленный массив A с индексами от 0 до 10. Ниже представлен фрагмент этой программы, в котором значения элементов массива сначала задаются, а затем меняются.
for i:=0 to 10 do
A[i]:=2+i;
for i:=0 to 4 do begin
A[i]:=A[10-i]-1;
A[10-i]:=A[i]+3;
end;
Чему будут равны элементы этого массива?
1) 11 10 9 8 7 5 6 7 8 9
2) 11 10 9 8 7 7 5 6 7 8 9
3) 11 10 9 8 7 7 10 11 12 13 14
4) 11 10 9 8 7 10 11 12 13 14
В программе описан одномерный целочисленный массив A с индексами от 1 до 10. Ниже представлен фрагмент этой программы, в котором значения элементов массива сначала задаются, а затем меняются.
for i:=1 to 10 do
A[i]:=2*i;
for i:=1 to 10 do begin
k:=2*A[i]+3;
A[10-i+1]:=k;
end;
Чему будут равны элементы этого массива?
1) 7 11 15 19 23 27 31 35 39 43
2) 17 25 33 41 49 23 19 15 11 7
3) 5 9 13 17 21 25 29 33 37 41
4) 43 39 35 31 27 23 19 15 11 7
Вариант 2
Значения элементов двух массивов А и В размером 1 х 100 задаются с помощью следующего фрагмента программы:
for i:=1 tо 100 do
A[i] := 50 – i;
for i:=1 tо 100 do
B[i] := A[i] + 49;
Сколько элементов массива В будут иметь отрицательные значения?
1) 1 2) 10 3) 50 4) 100
В программе описан одномерный целочисленный массив с индексами от 0 до 10. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:
for i:=0 to 10 do
A[i]:= i;
for i:=1 to 11 do
A[i-1]:= A[11-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) 10 9 8 7 6 5 6 7 8 9 10
4) 11 10 9 8 7 6 7 8 9 10 11
В программе описан одномерный целочисленный массив с индексами от 0 до 10 и целочисленные переменные k, i. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:
for i:=0 to 10 do A[i]:=i;
for i:=0 to 4 do begin
k:=A[i];
A[i]:=A[i+5];
A[i+5]:=k;
end;
Чему будут равны элементы этого массива?
1) 5 6 7 8 9 0 1 2 3 4 10
2) 10 9 8 7 6 5 4 3 2 1 0
3) 0 1 2 3 4 5 4 3 2 1 0
4) 1 0 3 2 5 4 7 6 9 8 10
Значения элементов двух массивов A[1..100] и B[1..100] задаются с помощью следующего фрагмента программы:
for n:=1 to 100 do
A[n] := n – 50;
for n:=1 to 100 do
B[101-n]:=A[n]*A[n];
Какой элемент массива B будет наименьшим?
1) B[1]2) B[50]
3) B[51]4) B[100] В программе описан одномерный целочисленный массив A с индексами от 0 до 10. Ниже представлен фрагмент этой программы, в котором значения элементов массива сначала задаются, а затем меняются.
for i:=0 to 10 do
A[i]:=2+i;
for i:=0 to 4 do begin
A[10-i]:=2*A[10-i];
A[i]:=A[i+1]+4;
end;
Чему будут равны элементы этого массива?
1) 7 8 9 10 11 7 16 18 20 22 24
2) 7 8 9 10 11 16 18 20 22 24
3) 2 3 4 5 6 7 16 18 20 22 24
4) 3 4 5 6 7 7 16 18 20 22 24
В программе описан одномерный целочисленный массив A с индексами от 1 до 10. Ниже представлен фрагмент этой программы, в котором значения элементов массива сначала задаются, а затем меняются.
for i:=1 to 10 do
A[i]:=5*i;
for i:=1 to 10 do begin
k:=A[i]-2;
A[10-i+1]:=k;
end;
Чему будут равны элементы этого массива?
1) 1 6 11 16 21 23 18 13 8 3
2) 3 8 13 18 23 28 33 38 43 48
3) 48 43 38 33 28 23 18 13 8 3
4) 1 6 11 16 21 26 31 36 41 46
Дополнительные задачи.
В программе описан одномерный целочисленный массив с индексами от 0 до 10 и целочисленные переменные k, i. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:
for i:=0 to 10 do A[i]:=i;
for i:=0 to 4 do begin
k:=A[i];
A[i]:=A[10-i];
A[10-i]:=k;
end;
Чему будут равны элементы этого массива?
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) 0 1 2 3 4 5 4 3 2 1 0
4) 10 9 8 7 6 5 6 7 8 9 10 В программе описан одномерный целочисленный массив A с индексами от 0 до 10. Ниже представлен фрагмент этой программы, в котором значения элементов массива сначала задаются, а затем меняются.
for i:=0 to 10 do
A[i]:=i;
for i:=0 to 5 do begin
A[10-i]:=A[9-i];
A[i]:=A[i+1];
end;
Чему будут равны элементы этого массива?
1) 0 1 2 3 4 5 6 7 8 9 10
2) 0 1 2 3 4 5 6 7 8 9 93) 1 2 3 4 5 5 5 6 7 8 9
4) 1 2 3 4 5 6 5 4 3 2 1 В программе описан одномерный целочисленный массив A с индексами от 0 до 10. Ниже представлен фрагмент этой программы, в котором значения элементов массива сначала задаются, а затем меняются.
A[0]:=1;
for i:=1 to 10 do
A[i]:=2+A[i-1];
for i:=0 to 5 do
A[10-i]:=A[i]-1;
Чему будут равны элементы этого массива?
1) 1 3 5 7 9 10 8 6 4 2 0
2) 1 3 5 7 9 11 13 15 17 19 21
3) 1 3 5 7 9 11 9 7 5 3 1
4) 1 3 5 7 9 11 8 6 4 2 0
В программе описан одномерный целочисленный массив с индексами от 0 до 10 и целочисленные переменные k, i. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:
for i:=0 to 10 do A[i]:=i;
for i:=0 to 4 do begin
k:=A[i];
A[i]:=A[10-i];
A[10-i]:=k;
end;
Чему будут равны элементы этого массива?
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) 0 1 2 3 4 5 4 3 2 1 0
4) 10 9 8 7 6 5 6 7 8 9 10 В программе описан одномерный целочисленный массив A с индексами от 0 до 10. Ниже представлен фрагмент этой программы, в котором значения элементов массива сначала задаются, а затем меняются.
for i:=0 to 10 do
A[i]:=i;
for i:=0 to 5 do begin
A[10-i]:=A[9-i];
A[i]:=A[i+1];
end;
Чему будут равны элементы этого массива?
1) 0 1 2 3 4 5 6 7 8 9 10
2) 0 1 2 3 4 5 6 7 8 9 93) 1 2 3 4 5 5 5 6 7 8 9
4) 1 2 3 4 5 6 5 4 3 2 1 В программе описан одномерный целочисленный массив A с индексами от 0 до 10. Ниже представлен фрагмент этой программы, в котором значения элементов массива сначала задаются, а затем меняются.
A[0]:=1;
for i:=1 to 10 do
A[i]:=2+A[i-1];
for i:=0 to 5 do
A[10-i]:=A[i]-1;
Чему будут равны элементы этого массива?
1) 1 3 5 7 9 10 8 6 4 2 0
2) 1 3 5 7 9 11 13 15 17 19 21
3) 1 3 5 7 9 11 9 7 5 3 1
4) 1 3 5 7 9 11 8 6 4 2 0