Математика ЕГЭ
Русский язык ЕГЭ
Математика 5-7
Математика ОГЭ
Информатика
Физика
Обществознание
Кликните, чтобы открыть меню

8. Анализ простейших программ

1. Вспоминай формулы по каждой теме
2. Решай новые задачи каждый день
3. Вдумчиво разбирай решения
Задание 1 #10177

Определите, что будет напечатано в результате работы следующего фрагмента программы:
\[\begin{array}{|l|l|l|} \hline \text{C++} & \text{Python} & \text{Pascal}\\ \hline \# \text{include <iostream>} & s=0 & \text{var $k, s$: integer;}\\ \text{using namespace std;} & k=0 & \text{begin}\\ \text{int main() \{} & \text{while $k$ < $15$} & \quad s:=0;\\ \text{int $s$, $k$;} & \quad k=k+3 & \quad k:=0;\\ s=0;k=0; & \quad s=s+k & \quad \text{while $k < 15$ do begin}\\ \text{while ($k < 15$) \{} & \text{print($s$)} & \quad \quad k:=k+3;\\ k=k+3;& & \quad \quad s:=s+k;\\ s=s+k;& & \quad \text{end;}\\ \text{\}}& & \quad \text{write($s$);}\\ \text{cout $<<$ $s$ $<<$ endl;}& & end.\\ \text{return 0;}&&\\ \text{\}}&&\\ \hline \end{array}\]

Вручную просчитаем все действия программы, для удобства отобразим это с помощью таблицы:
\[\begin{array}{|c|c|} \hline k & s\\ \hline 0&0\\ 0+3=3&0+3=3\\ 3+3=6&3+6=9\\ 6+3=9&9+9=18\\ 9+3=12&18+12=30\\ 12+3=15&30+15=45\\ \hline \end{array}\] Так как на следующем шаге \(k=15+3=18\), условие цикла \(while(k<15)\) не выполняется, значит, последнее значение \(s=45\), именно его и выведет на экран программа.

Ответ: 45

Задание 2 #12498

Определите, что будет напечатано в результате работы следующего фрагмента программы:
\[\begin{array}{| l | l | l |} \hline \textbf{C++} & \textbf{Python} & \textbf{Pascal}\\ \hline \textit{\#include <iostream>} & s=0 & \textit{var k, s: integer;}\\ \textit{using namespace std;} & k=0 & begin\\ \textit{int main() \{} & \textit{while k < 15} & \quad s:=0;\\ \textit{int s, k;} & \quad k=k+3 & \quad k:=0;\\ s=0;k=0; & \quad s=s+k & \quad \textit{while k < 15 do begin}\\ \textit{while (k < 15) \{} & print(s) & \quad \quad k:=k+3;\\ k=k+3;& & \quad \quad s:=s+k;\\ s=s+k;& & \quad end;\\ \textit{\}}& & \quad write(s);\\ \textit{cout $<<$ s $<<$ endl;}& & end.\\ \textit{return 0;}&&\\ \textit{\}}&&\\ \hline \end{array}\]


Вручную просчитаем все действия программы, для удобства отобразим это с помощью таблицы:
\[\begin{array}{|c|c|} \hline k & s\\ \hline 0&0\\ 0+3=3&0+3=3\\ 3+3=6&3+6=9\\ 6+3=9&9+9=18\\ 9+3=12&18+12=30\\ 12+3=15&30+15=45\\ \hline \end{array}\] Так как на следующем шаге \(k=15+3=18\), условие цикла \(while(k<15)\) не выполняется, значит, последнее значение \(s=45\), именно его и выведет на экран программа.

 

Ответ: 45

Задание 3 #12499


Определите, что будет напечатано в результате работы следующего фрагмента программы:
\[\begin{array}{| l | l | l |} \hline \textbf{C++} & \textbf{Python} & \textbf{Pascal}\\ \hline \textit{\#include <iostream>} & s=0 & \textit{var k, s: integer;}\\ \textit{using namespace std;} & k=0 & begin\\ \textit{int main() \{} & \textit{while s < }20 & \quad s:=0;\\ \textit{int s, k;} & \quad k=k+2 & \quad k:=0;\\ s=0;k=0; & \quad s=s+k & \quad \textit{while s < 20 do begin}\\ \textit{while (s < 20) \{} & print(k) & \quad \quad k:=k+2;\\ k=k+2;& & \quad \quad s:=s+k;\\ s=s+k;& & \quad end;\\ \textit{\}}& & \quad write(k);\\ \textit{cout $<<$ k $<<$ endl;}& & end.\\ \textit{return 0;}&&\\ \textit{\}}&&\\ \hline \end{array}\]


Первый способ решения
Вручную просчитаем все действия программы, для удобства отобразим это с помощью таблицы:
\[\begin{array}{|c|c|} \hline k & s\\ \hline 0&0\\ 0+2=2&0+2=2\\ 2+2=4&2+4=6\\ 4+2=6&6+6=12\\ 6+2=8&12+8=20\\ \hline \end{array}\] Так как на следующем шаге условие цикла \(while(s<20)\) не выполняется, значит, последнее значение \(k=8\), именно его и выведет на экран программа.

Второй способ решения
Т.к. \(k\) каждый раз увеличивается на одно и тоже значение, а \(s\) суммирует эти значения, можно сказать, что \(s\) — сумма \(n\)-ого количества членов арифметической прогрессии, где \(k\) — разность (шаг) прогрессии. Поскольку цикл \(while(s<20)\) выполняется до тех пор, пока истинно \(s<20\), именно переменная \(s\) определяет количество повторов цикла или же \(n\). Найдем \(n\): для этого подставим в формулу арифметической прогрессии уже известные нам данные:
\[s=\frac{2a_1+(n-1)k}{2}n\]
\[\frac{2\cdot2+(n-1)\cdot2}{2}\cdot n<20\] \[n^2+n-20<0\] \[D=1^2-4\cdot(-20)=81; \sqrt D=9\]
\[\left[ \begin{gathered} n=\frac{-1+9}{2}=4 \hfill \\ n=\frac{-1-9}{2}=-5<0, \text{количество шагов не может быть отрицательным}\\ \end{gathered} \right.\] Т.к. количество шагов 4, значит, \(k=0+4\cdot2=8\).

Ответ: 8

Задание 4 #12500


Определите, что будет напечатано в результате работы следующего фрагмента программы:
\[\begin{array}{| l | l | l |} \hline \textbf{C++} & \textbf{Python} & \textbf{Pascal}\\ \hline \textit{\#include <iostream>} & s=0 & \textit{var k, s: integer;}\\ \textit{using namespace std;} & k=5 & begin\\ \textit{int main() \{} & \textit{while k <= $20$} & \quad s:=0;\\ \textit{int s, k;} & \quad s=s+k & \quad k:=5;\\ s=0;k=5; & \quad k=k+2 & \quad \textit{while k <= $20$ do begin}\\ \textit{while (k <= $20$) \{} & print(s) & \quad \quad s:=s+k;\\ s=s+k;& & \quad \quad k:=k+2;\\ k=k+2;& & \quad end;\\ \textit{\}}& & \quad write(s);\\ \textit{cout $<<$ s $<<$ endl;}& & end.\\ \textit{return 0;}&&\\ \textit{\}}&&\\ \hline \end{array}\]


Первый способ решения
Вручную просчитаем все действия программы, для удобства отобразим это с помощью таблицы:
\[\begin{array}{|c|c|} \hline s & k\\ \hline 0&5\\ 5&7\\ 12&9\\ 21&11\\ 32&13\\ 45&15\\ 60&17\\ 77&19\\ 96&21\\ \hline \end{array}\] Так как на следующем шаге условие цикла \(while(k<=20)\) не выполняется, значит, последнее значение \(s=96\), именно его и выведет на экран программа.
Второй способ решения
Т.к. \(k\) каждый раз увеличивается на одно и тоже значение, а \(s\) суммирует эти значения, можно сказать, что \(s\) - сумма n-ого количества членов арифметической прогрессии, где \(k\) - разность(шаг) прогрессии. Поскольку цикл \(while(k<=20)\) выполняется до тех пор, пока истинно \(k<=20\), именно переменная \(k\) определяет количество повторов цикла или же \(n\). Найдем \(n: (20-5):2=7,5\). Т.к. \(n\) натуральное число, округляем в бóльшую сторону: \(n=8\). Теперь подставим известные данные в формулу суммы n членов арифметической прогрессии:
\[s=\frac{2a_1+(n-1)k}{2}n\]
\[s=\frac{2\cdot5+(8-1)\cdot2}{2}\cdot8=96\]

Ответ: 96

Задание 5 #12501


Определите, что будет напечатано в результате работы следующего фрагмента программы:
\[\begin{array}{| l | l | l |} \hline \textbf{C++} & \textbf{Python} & \textbf{Pascal}\\ \hline \textit{\#include <iostream>} & s=0 & \textit{var k, s: integer;}\\ \textit{using namespace std;} & k=3 & begin\\ \textit{int main() \{} & \textit{while k <= 15} & \quad s:=0;\\ \textit{int s, k;} & \quad s=s+k & \quad k:=3;\\ s=0;k=3; & \quad k=k+4 & \quad \textit{while k <= 15 do begin}\\ \textit{while (k <= 15) \{} & print(s) & \quad \quad s:=s+k;\\ s=s+k;& & \quad \quad k:=k+4;\\ k=k+4;& & \quad end;\\ \textit{\}}& & \quad write(s);\\ \textit{cout $<<$ s $<<$ endl;}& & end.\\ \textit{return 0;}&&\\ \textit{\}}&&\\ \hline \end{array}\]


Первый способ решения
Вручную просчитаем все действия программы, для удобства отобразим это с помощью таблицы:
\[\begin{array}{|c|c|} \hline s & k\\ \hline 0&3\\ 3&7\\ 10&11\\ 21&15\\ 36&19\\ \hline \end{array}\] Так как на следующем шаге условие цикла \(while(k<=15)\) не выполняется, значит, последнее значение \(s=36\), именно его и выведет на экран программа.

Второй способ решения
Т.к. \(k\) каждый раз увеличивается на одно и тоже значение, а \(s\) суммирует эти значения, можно сказать, что \(s\) - сумма n-ого количества членов арифметической прогрессии, где \(k\) - разность(шаг) прогрессии. Поскольку цикл \(while(k<=15)\) выполняется до тех пор, пока истинно \(k<=15\), именно переменная \(k\) определяет количество повторов цикла или же \(n\). Найдем \(n:\\ 3+4\cdot n > 15\)
\(n>=4\)
Теперь подставим известные данные в формулу суммы n членов арифметической прогрессии:
\[s=\frac{2a_1+(n-1)k}{2}n\]
\[s=\frac{2\cdot3+(4-1)\cdot4}{2}\cdot4=36\]

Ответ: 36

Задание 6 #12502


Определите, что будет напечатано в результате работы следующего фрагмента программы:
\[\begin{array}{| l | l | l |} \hline \textbf{C++} & \textbf{Python} & \textbf{Pascal}\\ \hline \textit{\#include <iostream>} & s=0 & \textit{var k, s: integer;}\\ \textit{using namespace std;} & k=0 & begin\\ \textit{int main() \{} & \textit{while s <= 100} & \quad s:=0;\\ \textit{int s, k;} & \quad k=k+5 & \quad k:=0;\\ s=0;k=0; & \quad s=s+k & \quad \textit{while s <= 100 do begin}\\ \textit{while (s <= 100) \{} & print(k) & \quad \quad k:=k+5;\\ k=k+5;& & \quad \quad s:=s+k;\\ s=s+k;& & \quad end;\\ \textit{\}}& & \quad write(k);\\ \textit{cout $<<$ k $<<$ endl;}& & end.\\ \textit{return 0;}&&\\ \textit{\}}&&\\ \hline \end{array}\]


Вручную просчитаем все действия программы, для удобства отобразим это с помощью таблицы:
\[\begin{array}{|c|c|} \hline k & s\\ \hline 0&0\\ 0+5=5&0+5=5\\ 5+5=10&5+10=15\\ 10+5=15&15+15=30\\ 15+5=20&30+20=50\\ 20+5=25&50+25=75\\ 25+5=30&75+30=105\\ \hline \end{array}\] Так как на следующем шаге условие цикла \(while(s<=100)\) не выполняется, значит, последнее значение \(k=30\), именно его и выведет на экран программа.

 

Ответ: 30

Задание 7 #12503


Определите, что будет напечатано в результате работы следующего фрагмента программы:
\[\begin{array}{| l | l | l |} \hline \textbf{C++} & \textbf{Python} & \textbf{Pascal}\\ \hline \textit{\#include <iostream>} & s=100 & \textit{var k, s: integer;}\\ \textit{using namespace std;} & k=0 & begin\\ \textit{int main() \{} & \textit{while s >= 50} & \quad s:=100;\\ \textit{int s, k;} & \quad k=k+1 & \quad k:=0;\\ s=100;k=0; & \quad s=s-k & \quad \textit{while s >= 50 do begin}\\ \textit{while (s >= 50) \{} & print(k) & \quad \quad k:=k+1;\\ k=k+1;& & \quad \quad s:=s-k;\\ s=s-k;& & \quad end;\\ \textit{\}}& & \quad write(k);\\ \textit{cout $<<$ k $<<$ endl;}& & end.\\ \textit{return 0;}&&\\ \textit{\}}&&\\ \hline \end{array}\]


Вручную просчитаем все действия программы, для удобства отобразим это с помощью таблицы:
\[\begin{array}{|c|c|} \hline k & s\\ \hline 0&100\\ 1&99\\ 2&97\\ 3&94\\ 4&90\\ 5&85\\ 6&79\\ 7&72\\ 8&64\\ 9&55\\ 10&45\\ \hline \end{array}\] Так как на следующем шаге условие цикла \(while(s>=50)\) не выполняется, значит, последнее значение \(k=10\), именно его и выведет на экран программа.

 

Ответ: 10