ДАЮ 50 БАЛЛОВ!!
Определите значение переменной s после выполнения фрагмента программы при указанных значениях a
p:=a;
s:=o;
while p>o do
begin
s:=s+p mod 10;
p:=p div 10;
end;
1) а=27
2) а=39
3) а=223
Ответы
Ответ:
значение переменной s после выполнения фрагмента
1) s = 9 (при а = 27)
2) s = 12 (при а = 39)
3) s = 7 (при а = 223)
Объяснение:
программа вычисляет сумму цифр числа
переменной p присваивается значение переменной a (p := a;)
переменной s присваивается начальное значение равное 0 (s := 0;)
цикл с предусловием (while) пока условие (p > 0) истинно (да)
выполняем действия:
суммируем значение переменной s с последней цифрой переменной p (s := s + p mod 10;, mod - остаток от целочисленного деления)
отбрасываем последнюю цифру переменной p (p := p div 10;, div - целочисленное деление)
1)
а = 27
p = a = 27
s = 0
проверяем условие p > 0 (27 > 0, да)
выполняем действия:
s = s + p mod 10 = 0 + 27 mod 10 = 0 + 7 = 7
p = p div 10 = 27 div 10 = 2
s = 7
p = 2
проверяем условие p > 0 (2 > 0, да)
выполняем действия:
s = s + p mod 10 = 7 + 2 mod 10 = 7 + 2 = 9
p = p div 10 = 2 div 10 = 0
s = 9
p = 0
проверяем условие p > 0 (0 > 0, нет)
действия не выполняем, т.к. условие ложно и цикл прерывается, значение переменных остаётся без изменений
2)
а = 39
p = a = 39
s = 0
проверяем условие p > 0 (39 > 0, да)
выполняем действия:
s = s + p mod 10 = 0 + 39 mod 10 = 0 + 9 = 9
p = p div 10 = 39 div 10 = 3
s = 9
p = 3
проверяем условие p > 0 (3 > 0, да)
выполняем действия:
s = s + p mod 10 = 9 + 3 mod 10 = 9 + 3 = 12
p = p div 10 = 3 div 10 = 0
s = 12
p = 0
проверяем условие p > 0 (0 > 0, нет)
действия не выполняем, т.к. условие ложно и цикл прерывается, значение переменных остаётся без изменений
3)
а = 223
p = a = 223
s = 0
проверяем условие p > 0 (223 > 0, да)
выполняем действия:
s = s + p mod 10 = 0 + 223 mod 10 = 0 + 3 = 3
p = p div 10 = 223 div 10 = 22
s = 3
p = 22
проверяем условие p > 0 (22 > 0, да)
выполняем действия:
s = s + p mod 10 = 3 + 22 mod 10 = 3 + 2 = 5
p = p div 10 = 22 div 10 = 2
s = 5
p = 2
проверяем условие p > 0 (2 > 0, да)
выполняем действия:
s = s + p mod 10 = 5 + 2 mod 10 = 5 + 2 = 7
p = p div 10 = 2 div 10 = 0
s = 7
p = 0
проверяем условие p > 0 (0 > 0, нет)
действия не выполняем, т.к. условие ложно и цикл прерывается, значение переменных остаётся без изменений