Тренировка задания 24 ЕГЭ (24.2), вторая часть ЕГЭ про работу с цифрами числа

Демоверсия ЕГЭ 2018, ФИПИ

На обработку поступает натуральное число, не превышающее 109. Нужно написать программу, которая выводит на экран максимальную цифру числа, кратную 5. Если в числе нет цифр, кратных 5, требуется на экран вывести «NO». Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
Напоминание: 0 делится на любое натуральное число.
  Паскаль:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var
  N, digit, maxDigit: longint;
 
begin
  readln(N);
  maxDigit := N mod 10;
  while N > 0 do
  begin
    digit := N mod 10;
    if digit mod 5 = 0 then
      if digit > maxDigit then
        maxDigit := digit;
    N := N div 10;
  end;
  if maxDigit = 0 then
    writeln('NO')
  else
    writeln(maxDigit)
end.

Последовательно выполните следующее:
1. Напишите, что выведет эта программа при вводе числа 132.
2. Приведите пример такого трёхзначного числа, при вводе которого
программа выдаёт верный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
  1) выпишите строку, в которой сделана ошибка;
  2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования.

✍ Решение:
 

    1. Программа выведет число 2.
    2. Программа выдаёт правильный ответ, например, для числа 135.

    Замечание для проверяющего. Программа работает неправильно из-за неверной начальной инициализации и неверной проверки отсутствия цифр, кратных 5. Соответственно, программа будет выдавать верный ответ, если вводимое число содержит хотя бы одну цифру, кратную 5, и наибольшая цифра числа, кратная 5, не равна 0 и не меньше младшей
    (крайней правой) цифры числа (или просто стоит последней).

    3. В программе есть две ошибки.
    Первая ошибка. Неверная инициализация ответа (переменная maxDigit).
    Строка с ошибкой:

    maxDigit := N mod 10;

    Верное исправление:

    maxDigit := -1;
    Вместо -1 может быть использовано любое число, меньшее 0.

    Вторая ошибка. Неверная проверка отсутствия цифр, кратных 5.
    Строка с ошибкой:

    ifmaxDigit = 0 then

    Верное исправление:

    ifmaxDigit = -1 then
    Вместо -1 может быть другое число, меньшее 0, которое было положено в maxDigit при исправлении первой ошибки, или проверка, что maxDigit< 0

2.

Дано натуральное число N, не меньшее 10 и не превосходящее 10 000. Требуется найти и напечатать сумму первой и последней цифр в десятичной записи числа N.
Для решения этой задачи ученик написал программу, но, к сожалению, его программа оказалась неверной.

Паскаль:

1
2
3
4
5
6
7
8
9
10
11
var
  n, a: integer;
begin
  read(n); 
  a := n div 10; 
  while n > 1 do 
  begin
    n := n div 10
  end;
  writeln(a + n)
end.

Последовательно выполните следующее:

  1. Напишите, что выведет эта программа при вводе числа 35.
  2. Приведите пример натурального числа, при вводе которого приведённая программа напечатает то, что требуется.
  3. Найдите в программе все ошибки (их может быть одна или несколько). Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.

✍ Решение:
 

  1. При вводе числа 35 программа выведет число 3.
  2. Например, число 11.
  3. Программа также выведет верный ответ для чисел 20, 30, 40, 50, 60, 70, 80, 90.
  4. Программа содержит две ошибки:
  5. 1) неверно находится крайняя справа цифра числа (а);
    2) неверное условие цикла.
    Пример исправления для языка Паскаль:
    Первая ошибка:

    а := a div 10;

    Исправленная строка:

    а := a mod 10;

    Вторая ошибка:

    while п > 1 do begin

    Исправленная строка:

    while п > 9 do begin

Еще подобные задания: вариант №1 досрочного экзамена 2020 года.