На обработку поступает натуральное число, не превышающее 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.
(крайней правой) цифры числа (или просто стоит последней).
3. В программе есть две ошибки.
Первая ошибка. Неверная инициализация ответа (переменная maxDigit).
Строка с ошибкой:
maxDigit := N mod 10;
Верное исправление:
maxDigit := -1;
Вторая ошибка. Неверная проверка отсутствия цифр, кратных 5.
Строка с ошибкой:
ifmaxDigit = 0 then
Верное исправление:
ifmaxDigit = -1 then
Дано натуральное число 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. |
Последовательно выполните следующее:
- Напишите, что выведет эта программа при вводе числа 35.
- Приведите пример натурального числа, при вводе которого приведённая программа напечатает то, что требуется.
- Найдите в программе все ошибки (их может быть одна или несколько). Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.
✍ Решение:
- При вводе числа 35 программа выведет число 3.
- Например, число 11.
- Программа содержит две ошибки:
1) неверно находится крайняя справа цифра числа (а);
2) неверное условие цикла.
Пример исправления для языка Паскаль:
Первая ошибка:
а := a div 10;
Исправленная строка:
а := a mod 10;
Вторая ошибка:
while п > 1 do begin
Исправленная строка:
while п > 9 do begin
Еще подобные задания: вариант №1 досрочного экзамена 2020 года.