Задачи для подготовки к ЕГЭ по информатике. Алгоритмы с использованием условного оператора.
методическая разработка по информатике и икт (11 класс) на тему

задачи

Скачать:

ВложениеРазмер
Файл algoritm_s_ispolzovaniem_uslovnogo_operatora.docx33.94 КБ

Предварительный просмотр:

Алгоритмы с использованием условного оператора

1. Дан фрагмент программы, обрабатывающий массив А из 10 элементов:

 

j := 1;

for i:=1 tо 10 do

if A[i] = A[j] then j := i;

s := j;

 

Чему будет равно значение переменной s после выполнения этого алгоритма?

1) 1
2) 10
3) индексу элемента, равного первому, и имеющему наибольший индекс
4) индексу элемента, равного последнему, и имеющему наименьший индекс

Решение.

Изначально элемент a[j]=a[1]. Условие цикла говорит нам о том, что если какой-то элемент а[i] массива А совпадает с первым элементом этого массива, то индексу j присваивается значение индекса i. Т. к. цикл пробегает все значения i в порядке увеличения, то последним значением j станет наибольшее значение индекса i такое, что a[i]=a[1]. Это значение совпадёт со значением переменной s после выполнения алгоритма.

 

Правильный ответ указан под номером 3.

2. Дан фрагмент программы, обрабатывающий двухмерный массив A размером nxn.

 

for i:=1 to n-1 do

for j:= i+1 to n do

if A[i,1] < A[j,1] then begin

k:=A[i,1];

A[i,1]:=A[j,1];

A[j,1]:=k;

end;

 

В этом фрагменте:

1) упорядочивается первая строка массива по убыванию
2) упорядочивается первый столбец массива по убыванию
3) заменяются элементы k-ого столбца таблицы
4) заменяются элементы k-ой строки таблицы

Решение.

Обратим внимание, что в двойном цикле переменная i изменяется от 1 до n-1, а j – от 1 до n (на 1 шаг больше). Это означает, что с элементом a[j,1] будут по очереди сравниваться все элементы столбца 1, кроме последнего. Они выстротся от самого большого до самого маленького сверху вниз, т.е. по убыванию.

 

Но чтобы выбрать правильный ответ, можно было рассмотреть данный фрагмент программы:

...k:=A[i,1];

A[i,1]:=A[j,1];

A[j,1]:=k;

...

Эта операция меняет местами два элемента первого столбца, а значит все изменения происходят только в нём. Вариант ответа, в котором фигурирует только первый столбец, указан под номером 2.

 

Правильный ответ указан под номером 2.

3. Значения элементов двухмерного массива A[1..100,1..100] задаются с помощью следующего фрагмента программы:

 

for i:=1 to 100 do

for k:=1 to 100 do

if i > k then

A[i,k] := i

else A[i,k] := -k;

 

Чему равна сумма элементов массива после выполнения этого фрагмента программы?

1) 5000
2) 0
3) -5000
4) -5050

Решение.

Из данной программы мы получим такую таблицу

-1 -2 -3 -4

 2 -2  -3 -4

 3   3 -3 -4

 4   4  4 -4 и т. д.

 

Если смотреть симметричность таблицы, то относительно главной диагонали ячейки будут взаимно уничтожаться, так что останется найти только сумму главной диагонали:

 

-1 - 2 - 3 - 4 - 5 -...- 98 - 99 - 100 = -(1 + 99) - (2 + 98) -...- (49 + 51) - 50 - 100 =

= -100 * 49 - 150 = -4 900 - 150 = -5 050.

 

Правильный ответ указан под номером 4.

4. В программе описан одномерный целочисленный массив 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

Решение.

Первый цикл, заполняем массив:

 

i=1: a[1]=5,

i=2: a[2]=10,

...

i=10: a[10]=50.

 

Второй цикл, меняем значение элементов:

i=1: k = a[1] - 2 = 3, a[11-1] = a[10] = 3,

i=2: k = a[2] - 2 = 8, a[11-2] = a[9] = 8,

i=3: a[8] = 13,

i=4: a[7] = 18,

i=5: a[6] = 23,

i=6: k = a[6] - 2 = 21, a[11-6] = a[5] = 21 (здесь и далее используются уже изменённые элементы, а не исходные),

i=7: k = a[7] - 2 = 16, a[11-7] = a[4] = 16,

...

i=10: k = a[10] - 2 = 3 - 2 = 1, a[1] = 1.

 

Поэтому в результате выполнени программы элементы массива будут равны: 1, 6, 11, 16, 21, 23, 18, 13, 8, 3.

 

Правильный ответ указан под номером 1.

5. В программе описан одномерный целочисленный массив с индексами от 0 до n. Ниже представлен записанный на разных языках программирования фрагмент одной и той же программы, обрабатывающей данный массив:

 

 

Бейсик

Паскаль

s = 0

z = A(n)

FOR i = 1 TO n - 1

IF A(i) < z THEN

s = s + A(i)

NEXT i

A(10)=10

s: = 0;

z: = A[n];

for i: = 0 to n - 1 do

begin

if A[i] < z then

s: = s + A[i];

end

Си

Алгоритмический язык

s = 0;

z = A[n];

for (i = 0; i < n; i++){

if (A[i] < z) s = s + A[i];

s: = 0

z: = A[n]

нц для i от 0 до n - 1

если A[i] < z то

s:=s + A[i]

все

кц

 

Чему будет равно значение переменной s после выполнения данной программы? Ответ должен быть верным при любых значениях элементов массива.

1) Минимальному элементу в массиве A
2) Количеству элементов массива A, меньших последнего элемента массива
3) Сумме всех элементов массива А, меньших последнего элемента массива
4) Индексу первого элемента массива А, который меньше A[n]

Решение.

Переменой z присваивается значение последнего элемента.

 

Внутри цикла все элементы массива сравниваются с последним, при этом если элемент меньше последнего, то переменная s увеличивается на значение данного элемента. Если в массиве x элементов меньше последнего, то s примет значение, равное сумме значений x элементов, меньших последнего элемента массива.

 

Правильный ответ указан под номером 3.

6. В программе описан одномерный целочисленный массив с индексами от 0 до 10. Ниже представлен записанный на разных языках программирования,фрагмент одной и той же программы, обрабатывающей данный массив:

 

 

Бейсик

Паскаль

s=0

n = 10

FOR i = 0 TO n

IF A(n − i)-A(i) > A(i) THEN

s = s + A(i)

END IF

NEXT i

s := 0;

n := 10;

for i:=0 to n do begin

if A[n - i] - A[i] > A[i] then

s := s + A[i];

end;

Си

Алгоритмический язык

s = 0;

n = 10;

for (i = 0; i <= n; i++ )

if(A[n - i]-A[i] > A[i])

s = s+ A[i];

s := 0

n:=10

нц для i от 0 до n

если A[n - i] - A[i] > A[i]

то s := s + A[i]

все

кц

 

В начале выполнения этого фрагмента в массиве находились числа 0, 10, 20, 30, 40, 50, 60, 70, 80. 90, 100, т.е. A[0] = 0, A[1] = 10 и т. д. Чему будет равно значение переменной s после выполнения данной программы?

1) 60
2) 100
3) 150
4) 550

Решение.

Цикл выполняется, пока разность A[n − i] − A[i] больше, чем A[i]. При i=0, 1, 2, 3, 4 получаем:

 

i=0: A[10] − A[0] = 100 − 0 > A[0], s:=0 + 0 = 0;

i=1: A[9] − A[1] = 90 − 10 > A[1], s:=0 + 10 = 10;

i=2: A[8] − A[2] = 80 − 20 > A[2], s:=10 + 20 = 30;

i=3: A[7] − A[3] = 70 − 30 > A[3], s:=30 + 30 = 60.

 

Условие A[n − i] − A[i] > A[i] перестанет выполняться на пятом шаге, когда 60 − 40 > 40 — неверно. Таким образом, присваивание s := s + A[i] выполнится для первых четырех элементов. После выполнения программы получим s = 60.

 

Правильный ответ указан под номером 1.

7. В программе описан одномерный целочисленный массив с индексами от 0 до 12. Ниже представлен записанный на разных языках программирования фрагмент одной и той же программы, обрабатывающей данный массив:

 

Бейсик

Паскаль

s = 0

n = 12

FOR i = 0 TO n

IF A(n–i) – A(i) = A(i) THEN

s = s+2*A(i)

END IF

NEXT i

s := 0;

n := 12;

for i:=0 to n do begin

if A[n–i] – A[i] = A[i] then

s:=s+2*A[i];

end;

Си

Алгоритмический язык

s = 0;

n = 12;

for (i = 0; i <= n; i++) {

if (A[n–i] – A[i] == A[i])

s = s+2*A[i];

}

s := 0

n := 12

нц для i от 0 до n

если A[n–i] – A[i] = A[i]

то s := s+2*A[i]

все

кц

 

В начале выполнения этого фрагмента в массиве находились числа 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, т. е. A[0] = 0, A[1] = 10 и т. д. Чему будет равно значение переменной s после выполнения данной программы?

1) 60
2) 80
3) 100
4) 780

Решение.

Действие «s:=s+2*A[i];» выполняется, если истинно условие «if A[n–i] – A[i] = A[i]». Данное условие выполнено только для i = 4, в этом случае A[8] − A[4] = 80 − 40 = 40 = A[4]. Переменная s примет значение s = 0 + 2 · 40 = 80.

 

Правильный ответ указан под номером 2.

8. Значения элементов двумерного массива А были равны 0. Затем значения некоторых элементов были изменены (см. представленный фрагмент программы):

n := 0;

for i:=1 tо 5 do

for j:=1 tо 6-i do begin

n := n + 1;

A[i,j] := n;

end;

Какой элемент массива будет иметь в результате максимальное значение?

1) A[1,1]
2) A[1,5]
3) A[5,1]
4) A[5,5]

Решение.

В переменной n накапливается сумма проходов цикла. Это число всё время растёт, следовательно, наибольшим элементом массива будет тот, значение которому будет присвоено последним. Это элемент A[5,1].


По теме: методические разработки, презентации и конспекты

Программирование разветвляющихся алгоритмов. Условный оператор

Технологическая карта урока по теме: "Программирование разветвляющихся алгоритмов. Условный оператор"...

Конспект урока по информатике на тему: «Программирование разветвляющихся алгоритмов. Условный оператор».

Цели:-          рассмотреть правила записи условного оператора;-          рассмотреть формат и назначение сост...

Презентация к уроку информатики в 8 классе "Условный оператор"

В презентации рассматривается работа условного  оператора и запись его на языке Pascal в полной и неполной формах. Дается понятие составного оператора и правила его записи. Рассматривается вложен...