8. Арифметическая прогрессия
1. Определите, что будет напечатано
в результате работы следующего фрагмента программы:
var k, s: integer;
begin
s:=0;
k:=1;
while s < 66 do begin
k:=k+3;
s:=s+k;
end;
write(k);
end.
Решение.
Цикл while выполняется
до тех пор, пока истинно условие s < 66, т. е. переменная s определяет,
сколько раз выполнится цикл.
Значение s есть сумма
первых n членов арифметической прогрессии. , —
сумма первых n членов прогрессии, —
разность прогрессии, —
количество членов.
Цикл прервется,
когда .
Найдем : , , (т.
к. k:=k+3). Чтобы решить это неравенство, нам необходимо решить квадратное
уравнение ,
среди его корней нас интересуют только положительные, следовательно,
Воспользовавшись методом
интервалов, находим, что первое натуральное n, при котором нарушается
условие, есть .
Подставив известные
параметры в получаем,
что
2. Определите, что будет напечатано
в результате работы следующего фрагмента программы:
var k, s: integer;
begin
s:=0;
k:=0;
while k < 30 do begin
k:=k+3;
s:=s+k;
end;
write(s);
end.
Решение.
Цикл while выполняется
до тех пор, пока истинно условие k < 30, т. е. переменная k определяет,
сколько раз выполнится цикл.
Так как последовательность
k представляет собой арифметическую прогрессию, найдем n из неравенства:
(т.
к. k:=k+3). Воспользовавшись методом интервалов, находим первое натуральное
n, при котором нарушается условие:
Значение s есть сумма
первых n членов арифметической прогрессии. —
сумма первых n членов прогрессии, —
разность прогрессии, —
количество членов.
3. Определите, что будет напечатано
в результате работы следующего фрагмента программы:
var k, s: integer;
begin
s:=1;
k:=0;
while k < 13 do begin
s:=s+2*k;
k:=k+4;
end;
write(s+k);
end.
Решение.
Цикл while выполняется
до тех пор, пока истинно условие k < 13, т. е. переменная k определяет,
сколько раз выполнится цикл.
Так как числа небольшие,
можно аккуратно выписать все s и k:
s 1 1 9 25 49
k 0 4 8 12 16
(Помните, что условие
k < 13 проверяется сразу после k:=k+4, следовательно, действие
s:=s+2*k для k=16 выполняться не будет)
Следовательно,
ответ 49+16=65.
4. Определите, что будет напечатано
в результате работы следующего фрагмента программы:
var n, s: integer;
begin
n := 1;
s := 0;
while n <= 101 do begin
s := s + 7;
n := n + 1
end;
write(s)
end.
Решение.
Цикл while выполняется
до тех пор, пока истинно условие n <= 101, т. е. переменная n определяет,
сколько раз выполнится цикл. Следовательно, формульно s можно задать
как функцию n так:
,
где а
,
так как последняя операция, выполненная в цикле: n := 101 + 1.
Следовательно
5. Определите, что будет напечатано
в результате работы следующего фрагмента программы:
var n, s: integer;
begin
n := 24;
s := 0;
while n <= 28 do begin
s := s + 20;
n := n + 2
end;
write(s)
end.
Решение.
Цикл while выполняется
до тех пор, пока истинно условие n <= 28, т. е. переменная n определяет,
сколько раз выполнится цикл.
Аккуратно посчитаем,
сколько раз выполниться цикл (k):
Значения n: 24 26 28
30.
Следовательно, цикл
выполнится три раза (так как действие n := n + 2 стоит в конце цикла, следовательно,
для n=30 действие s := s + 20 не будет выполняться).
Посчитаем значение
s: .
6. Определите, что будет напечатано
в результате выполнения программы (записанной ниже на разных языках
программирования):
Бэйсик
|
Паскаль
|
DIM N, S AS INTEGER
N = 3
S = 0
WHILE N <= 7
S = S + N
N = N + 1
WEND
PRINT S
|
var n, s: integer;
begin
n :=
3;
s :=
0;
while
n <= 7 do
begin
s :=
s + n;
n :=
n + 1
end;
write(s)
end.
|
Си
|
Алгоритмический
|
#include
void
main()
{
int
n, s;
n =
3;
s =
0;
while
(n <= 7)
{
s =
s + n;
n =
n + 1;
}
printf("%d",
s);
}
|
алг
нач
цел n, s
n :=
3
s :=
0
нц пока n <= 7
s :=
s + n
n :=
n + 1
кц
вывод s
кон
|
Решение.
Цикл while выполняется
до тех пор, пока истинно условие n <= 7, т. е. переменная n определяет,
сколько раз выполнится цикл.
Цикл выполнится раз
( "+1" потому, что в дроби мы не учитываем то, что при 7 он тоже
выполнится).
Заметим, что в s накапливается
сумма арифметической прогрессии из 5 членов с разностью 1. Следовательно,.
7. Определите, что будет напечатано
в результате выполнения программы (записанной ниже на разных языках
программирования):
Бэйсик
|
Паскаль
|
Dim s, k As Integer
s =
0
k =
1
While k < 11
s =
s + k
k =
k + 1
End While
Console.Write(s)
|
Var s, k : integer;
BEGIN
s:=0;
k:=1;
while
k<11 do
begin
s:=s+k;
k:=k+1;
end;
write(s);
END.
|
Си
|
Алгоритмический
|
{
int
s, k;
s =
0;
k =
1;
while
(k<11) {
s =
s+k;
k =
k+1;
}
printf("%d",
s);
}
|
нач
цел s, k
s:=0
k:=1
нц пока k < 11
s:=s+k;
k:=k+1
кц
вывод s
кон
|
Решение.
Цикл while выполняется
до тех пор, пока истинно условие k < 11, т. е. переменная k определяет,
сколько раз выполнится цикл.
Цикл выполнится раз.
Заметим, что в s накапливается сумма арифметической прогрессии, содержащей
11 членов, с разностью 1. Следовательно, .
8. Определите, что будет напечатано
в результате выполнения программы
(записанной ниже на разных языках программирования):
Бейсик
|
Паскаль
|
DIM N, S AS INTEGER
N = 0
S = 512
WHILE S >= 0
S = S - 20
N = N + 1
WEND
PRINT N
|
var n, s: integer;
begin
n := 0;
s := 512;
while
s >= 0 do
begin
s
:= s - 20;
n
:= n + 1
end;
write(n)
end.
|
Си
|
Алгоритмический
|
#include<stdio.h>
void
main()
{
int n, s;
n = 0;
s = 512;
while (s >= 0)
{
s = s - 20;
n = n + 1;
}
printf("%d", n);
}
|
алг
нач
цел n, s
n := 0
s := 512
нцпока s >= 0
s := s - 20
n := n + 1
кц
вывод n
кон
|
Решение.
В переменной n записывается сколько
раз произошел цикл. Следовательно,
Тот факт, что при n = 25, s будет > 0
означает, что у=цикл выполниться 26 раз.
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.