Дополнительные задачи к экзамену

advertisement
Дополнительные задачи
Следующий фрагмент программы записывает в переменную Min минимальный элемент в
двумерном массиве Dist размера NxN, заполненном целыми неотрицательными числами:
А4
Min:=Dist[1,1];
for i:=1 to N do
for j:=1 to N do
if Dist [i,j]<Min then Min:=Dist [i,j];
На очень медленном компьютере эта программа при N=500 работала 2 секунд. Оцените
время работы этой программы на том же компьютере при N=1000:
А7
1)Дан фрагмент программы:
…
x:=1; y:=3; z:=4; m:=2;
if x<y then if x<=z then m:=x else m:=z else if y>=z then m:=y else m:=z;
…
Какое значение будет иметь переменная m после выполнения данного фрагмента
программы?
2) Чему будет равно значение переменной S после выполнения данного фрагмента
программы?
......
a:=0;S:=7;
If a>1 then if a<4 then S:=5 else S:=6 else S:=S+1;
3) Выберите условие, эквивалентное принадлежности x интервалу (a,b) или (с,d):
1)
2)
3)
4)
А8
if (x>a) and (x<b) and(x<d) and (x>c) then ...
if (x>a) or(x<b) and((x<d) or (x>c) then ...
if (x>a) and (x<b) or(x<d) and (x>c) then ...
нет данного условия среди перечисленных
1) Что получим в результате выполнения следующей программы?
var
s,i,k:integer;
begin
k:=4; S:=1;
For i:=1 to 4 do
S:=S+2*k;
Write(S)
end.
2) Что получим в результате выполнения следующей программы?
var
s,i,k:integer;
begin
k:=1; S:=2;
For i:=-1 to 3 do;
S:=S+k;
Write(S)
end.
3) Что получим в результате выполнения следующей программы?
var
s,i,k:integer;
begin
k:=3; S:=0;
For i:=1 downto 4 do
S:=S+k;
Write(S)
end.
А9
1) Что выведет на экран следующий фрагмент программы?
b:=7; i:=5;
repeat
b:=b+1;
i:=i-1
until i<3;
writeln(b);
2) Определите значение переменной s после выполнения следующих операторов:
s:=1; n:=1; i:=3;
while i<=2*n do begin s:=s+2/(i*3); i:=i+2 end;
А10
1) Сколько раз выполнится оператор writeln в следующем фрагменте программы?
...
for i:=1 to 5 do
for j:=5 downto 1 do if i>j then writeln(‘*’);
2) Определите значение переменной s после выполнения следующих операторов:
S:=1;
for i:=2 to 4 do
for j:=1 to 5 do if i<>j then S:=S+1;
...
А11
1) Строковая переменная с=’Шелеховский лицей’.
Чему будет равна целочисленная переменная k после выполнения следующего
фрагмента:
k:=0;
For I:=1 to length(c) do
begin
b:=copy(c,i,1);
if (b=’е’)or(b=’и’) then k:=k+1;
end;
2) Строковая переменная с=’Шелеховский лицей’.
Чему будет равна целочисленная переменная k после выполнения следующего
фрагмента:
S:=’’;
For I:= length(c) downto 1do
begin
b:=copy(c,i,1);
if (b<>’ ’)or(b<>’и’) then S:=S+b;
end;
А14
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) Значения двух массивов 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
3) Элементы двухмерного массива A размером 99 задаются с помощью следующего
фрагмента программы:
for n:=1 to 9 do
for k:=1 to 9 do
A[n,k]:=n+k+1;
Сколько элементов массива A будут принимать четные значения?
1) 36
2) 40
3) 41
4) 45
B1
1) (b5-3)Определите, что будет напечатано в результате работы следующего фрагмента
программы:
var k, s: integer;
begin
s:=3;
k:=1;
while k < 25 do begin
s:=s+k;
k:=k+2;
end;
write(s);
end;
2) (b5-5)Определите, что будет напечатано в результате работы следующего фрагмента
программы:
var k, s: integer;
begin
s:=0;
k:=0;
while s < 100 do begin
s:=s+k;
k:=k+4;
end;
write(k);
end.
B2
1) Ниже записана программа. Получив на вход число x , эта программа печатает два числа, L и
M . Укажите наибольшее из таких чисел x , при вводе которых алгоритм печатает сначала 3, а
потом 7.
var x, L, M: integer;
begin
readln(x);
L:=0; M:=0;
while x > 0 do begin
L:= L + 1;
M:= M + x mod 10;
x:= x div 10;
end;
writeln(L); write(M);
end.
2) (b8-34) Ниже записана программа. Получив на вход число x , эта программа
печатает два числа, a и b . Укажите наименьшее из таких чисел x , при вводе
которых алгоритм печатает сначала 3, а потом 35.
var x, a, b: integer;
begin
readln(x);
a:=0; b:=1;
while x>0 do begin
a:=a+1;
b:=b*(x mod 10);
x:= x div 10
end;
writeln(a); write(b);
end.
C1
Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости
(x, y – действительные числа) и определяет принадлежность точки заштрихованной области,
включая ее границы. Программист торопился и написал программу неправильно. Вот она:
var x, y: real;
y
begin
readln(x, y);
B
y  x 1
G
if y <= 3-x*x then
2
J
y  3 x F
if y >= 0 then
H
E
if y >= x+1 then
x
D 0
K
write('принадлежит')
else
A C
write('не принадлежит');
end.
1. Перерисуйте и заполните таблицу, которая
показывает, как работает программа при аргументах,
принадлежащих различным областям (A, B, C, D, E, F,
G, H). Точки, лежащие на границах областей, отдельно не рассматривать.
y <= 3-x*x
y >= 0
y >= x+1
Область
вывод
верно?
A
B
C
D
E
F
G
H
J
K
В столбцах условий укажите "да", если условие выполнится, "нет" если условие
не выполнится, "—" (прочерк), если условие не будет проверяться, «не изв.», если
программа ведет себя по-разному для разных значений, принадлежащих данной
области. В столбце "Программа выведет" укажите, что программа выведет на экран.
Если программа ничего не выводит, напишите "—" (прочерк). Если для разных
значений, принадлежащих области, будут выведены разные тексты, напишите «не
изв». В последнем столбце укажите "да" или "нет".
2. Укажите, как нужно доработать программу, чтобы не было случаев ее
неправильной работы. (Это можно сделать несколькими способами, поэтому можно
указать любой способ доработки исходной программы).
C2
1) Дан целочисленный массив из 30 элементов. Элементы массива могут принимать значения
от
–1000 до 1000. Опишите на русском языке или на одном из языков программирования
алгоритм, который находит и выводит среднее арифметическое всех элементов массива,
оканчивающихся цифрой 5. Гарантируется, что хотя бы один такое элемент в массиве есть.
Исходные данные объявлены так, как показано ниже. Запрещается использовать
переменные, не описанные ниже, но разрешается не использовать часть из них.
Паскаль
Естественный язык
Объявляем массив A из 30 элементов.
const N=30;
var a: array [1..N] of integer;
Объявляем целочисленные переменные i, x,
i, x, y: integer;
y и вещественную переменную s. В цикле от
s: real;
1 до 30 вводим элементы массива A с 1-го
begin
по 30-й.
for i:=1 to N do readln(a[i]);
...
...
end.
В качестве ответа вам необходимо привести фрагмент программы (или описание алгоритма
на естественном языке), который должен находиться на месте многоточия. Вы можете
записать решение также на другом языке программирования (укажите название и
используемую версию языка программирования, например, Borland Pascal 7.0) или в виде
блок-схемы. В этом случае вы должны использовать те же самые исходные данные и
переменные, какие были предложены в условии (например, в образце, записанном на
естественном языке).
2) Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые
значения от 0 до 100. Опишите на русском языке или на одном из языков
программирования алгоритм, позволяющий найти и вывести произведение двузначных
элементов массива, которые не делятся на 6. Гарантируется, что в исходном массиве
есть хотя бы один такой элемент. Исходные данные объявлены так, как показано ниже.
Запрещается использовать переменные, не описанные ниже, но разрешается не
использовать часть из них. Исходные данные всегда подобраны так, что результат
произведения не выходит за пределы объявленных типов данных.
Паскаль
Естественный язык
Объявляем массив A из 30 элементов.
const N=30;
var a: array [1..N] of longint;
Объявляем целочисленные переменные I, J,
і, j, p: longint;
P. В цикле от 1 до 30 вводим элементы
begin
массива A с 1-го по 30-й.
for і := 1 to N do
...
readln(a[i]);
...
end.
В качестве ответа вам необходимо привести фрагмент программы (или описание алгоритма
на естественном языке), который должен находиться на месте многоточия. Вы можете
записать решение также на другом языке программирования (укажите название и
используемую версию языка программирования, например, FreePascal 2.4) или в виде блоксхемы. В этом случае вы должны использовать те же самые исходные данные и переменные,
какие были предложены в условии (например, в образце, записанном на естественном
языке).
Download