8. Геометрическая прогрессия
1. Определите, что будет напечатано
в результате работы следующего фрагмента программы:
var k, s: integer;
begin
s:=0;
k:=0;
while s < 80 do begin
s:=s+2*k;
k:=k+4;
end;
write(s);
end.
Решение.
Цикл while выполняется
до тех пор, пока истинно условие s < 80, т. е. переменная k определяет,
сколько раз выполнится цикл.
Аккуратно выпишем
все s и k:
s 0 0 8 24 48 80
k 0 4 8 12 16 20
(Помните, что условие
s < 80 проверяется только после k:=k+4, поэтому действие s:=s+2*k последний
раз выполнится для k=16)
Следовательно ответ
80.
2. Определите, что будет напечатано
в результате работы следующего фрагмента программы:
var k, s: integer;
begin
s:=0;
k:=0;
while k < 12 do begin
s:=s+2*k;
k:=k+3;
end;
write(s);
end.
Решение.
Цикл while выполняется
до тех пор, пока истинно условие k < 12, т. е. переменная k определяет,
сколько раз выполнится цикл.
Так как числа небольшие,
можно аккуратно выписать все s и k:
s 0 0 6 18 36
k 0 3 6 9 12
(Помните, что условие
k < 12 проверяется сразу после k:=k+3, следовательно действие
s:=s+2*k для k=12 выполняться не будет)
Следовательно,
ответ — 36.
3. Определите, что будет напечатано
в результате выполнения программы (записанной ниже на разных языках
программирования).
Бейсик
|
Паскаль
|
DIM N, S AS INTEGER
N = 1
S = 6
WHILE S <= 365
S = S + 36
N = N * 2
WEND
PRINT N
|
var n, s: integer;
begin
n :
= 1;
s :
= 6;
while
s <= 365 do
begin
s :
= s + 36;
n :
= n * 2
end;
write(n)
end.
|
Си
|
Алгоритмический
|
#include
void
main()
{
int
n, s;
n =
1;
s =
6;
while
(s <= 365)
{
s =
s + 36;
n =
n * 2;
}
printf("%d",
n);
}
|
алг
нач
цел n, s
n :
= 1
s :
= 6
нц пока s
<= 365
s :
= s + 36
n :
= n * 2
кц
вывод n
кон
|
Решение.
Цикл while выполняется
до тех пор, пока истинно условие s <= 365, т. е. переменная s определяет,
сколько раз выполнится цикл. Цикл выполнится раз.
Учитывая, что изначально s=6 и что действие "n : = n * 2" выполняется
после "s : = s + 36", приходим к выводу, что действие "n :
= n * 2" выполнится 10 раз. Следовательно, значение n будет равно
210 = 1024.
Ответ: 1024.
4. Определите, что будет напечатано
в результате выполнения программы (записанной ниже на разных языках
программирования).
Бейсик
|
Паскаль
|
DIM N, S AS INTEGER
N = 1
S = 0
WHILE S <= 1024
S = S + 128
N = N * 2
WEND
PRINT N
|
program B05;
var n, s: integer;
begin
n := 1;
s := 0;
while s <= 1024 do
begin
s := s + 128;
n := n * 2;
end;
write(n)
end.
|
Си
|
Алгоритмический язык
|
#include
void main()
{
int n, s;
n = 1;
s = 0;
while (s <= 1024)
{
s = s + 128;
n = n * 2;
}
printf("%d", n);
}
|
алг
нач
цел n, s
n := 1
s := 0
нц пока s <= 1024
s := s + 128
n := n * 2
кц
вывод n
кон
|
Решение.
Цикл while выполняется
до тех пор, пока истинно условие s ≤ 1024, т. е. переменная s определяет,
сколько раз выполнится цикл.
Заметим, что После
9 шага s станет равной 1152 и условие s ≤ 1024 окажется невыполненным,
цикл прервется. Следовательно, значение n будет равно 29 =
512.
Ответ: 512.
5. Определите, что будет напечатано
в результате выполнения программы (записанной ниже на разных языках
программирования).
Бейсик
|
Паскаль
|
DIM N, S AS INTEGER
N = 0
S = 1
WHILE S <= 1000
S = S * 3
N = N + 3
WEND
PRINT N
|
program B05;
var n, s: integer;
begin
n := 0;
s := 1;
while s <= 1000 do
begin
s := s * 3;
n := n + 3;
end;
write(n)
end.
|
Си
|
Алгоритмический язык
|
#include
void main()
{
int n, s;
n = 0;
s = 1;
while (s <= 1000)
{
s = s * 3;
n = n + 3;
}
printf("%d", n);
}
|
алг
нач
цел n, s
n := 0
s := 1
нц пока s <= 1000
s := s * 3
n := n + 3
кц
вывод n
кон
|
Решение.
Цикл while выполняется
до тех пор, пока истинно условие s ≤ 1000, т. е. переменная s определяет,
сколько раз выполнится цикл.
Поскольку 36 <
1000 < 37 = 2187 , следовательно, цикл выполнится
7 раз. На 7-м шаге s станет равной 2187 и условие s ≤ 1000 окажется не выполненным,
цикл прервется. Следовательно, значение n будет равно
7·3 = 21.
Ответ: 21.
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.