Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задания и решения олимпиады по информатике 2016.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
89 Кб
Скачать
☆

Задание 15 (4 балла)

При каком наибольшем введенном числе d после выполнения программы будет напечатано 55?

Паскаль

Visual Basic

var n, s, d: integer;

begin

readln(d);

n := 0;

s := 0;

while s <= 365 do

begin

s := s + d;

n := n + 5

end;

write(n)

end.

Dim n, s, d As Integer

d = InputBox("Введите d")

n = 0

s = 0

While s <= 365

s = s + d

n = n + 5

Wend

Print n

Решение – n будет равно 55 на 11 шаге цикла. Значит на десятом шаге значение не должно превысить 365, поэтому d=36.

Задание 16 (4 балла)

Определите, что будет напечатано в результате работы следующего фрагмента программы:

Паскаль

Visual Basic

var k, s: integer;

begin

s:=0;

k:=0;

while s < 1024 do

begin

s:=s+10;

k:=k+1;

end;

write(k);

end.

Dim k, s As Integer

s = 0

k = 0

While s < 1024

s = s + 10

k = k + 1

Wend

Print k

Решение: 1024/10 (счетчик s=s+10) = 102.4, значит при превышении 1024 k=103

Задача 17 (5 баллов)

В представленном фрагменте программы значения одно­мерного массива задаются с помощью оператора цикла. Чему бу­дет равно а(16)?

Паскаль

Visual Basic

var i: integer;

a:array [0..100] of integer;

begin

for i:=1 to 10 do

begin

a[2*i-1]:=i;

a[2*i]:=i*i;

end;

end.

Dim a(1 To 100) As Integer

Dim i As Integer

For i = 1 To 10

a(2 * i - l) = i

a(2 * i) = i * i

Next

Решение Полученный массив= 1 1 2 4 3 9 4 16 5 25 6 36 7 49 8 64 9 81 10 100

Ответ – 64

Задача 18 (5 баллов)

Определите, что будет напечатано в результате выполнения следующего алгоритма

Паскаль

Visual Basic

var a, b, t, M, R:integer;

Function F(x:integer):integer;

begin

F:=x*x-10;

end;

begin

a:=-20; b:=20;

M:=a;

R:=F(a);

for t:= a to b do

begin

if (F(t)<R)then begin

M:=t;

R:=F(t);

end;

end;

write(R,M);

end.

Function F(x)

F = x * x - 10

End Function

Dim a, b, t, M, R As Integer

a = -20: b = 20

M = A: R = F(A)

For t = a To B

If F(t) < R Then

M = t

R = F(t)

End If

Next t

Print R; M

Решение: Задача сводится к поиску значений Х и У минимума функции У=Х2-10. Для нее Х=0, У=-10. При выводе на печать У, затем Х мы получим -100.

Задача 19 (5 баллов)

Определите назначение данной программы и результат, полученный на экране. Если в программе присутствует ошибка предложите варианты к ее устранению:

Паскаль

Visual Basic

Program Strings;

var d,d1:string;

s, i: integer;

begin

d:='Люблю грозу в начале мая!';

d1:=' ';

d:=d+d1;

s:=0;

for i:=1 to length(d) do

begin

if (d[i]=' ')and(d[i-1]<>' ') then inc(s);

end;

inc(s);

writeln(s);

end.

Dim d, d1 As String

Dim s, i As Integer

d = "Люблю грозу в начале мая!"

d1 = " "

d = d & d1

s = 0

For i = 2 To Len(d)

If (Mid(d, i, 1) = " ") And (Mid(d, i - 1, 1) <> " ") Then s = s + 1

Next i

s = s + 1

Print (s)

Решение. Задача сводится к подсчету количества слов в строке. Выводимое значение 6 является ошибочным, поскольку при добавлении к обрабатываемой строке пробела алгоритм неверен. Пример исправления ошибки: заменить inc(s); на if d[i-1]<>' ' then inc(s);