Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 10
9, и выводится минимальную цифру этого числа. Программист торопился и написал программу неправильно:
Паскаль |
Си |
var N: longint;
digit, min_digit: integer;
begin
(*)
(1) readln(N);
(2) min_digit := 0;
(3) while N > 0 do begin
(4) digit := N mod 10;
(5) if digit > min_digit then
(6) min_digit := digit;
(7) N := N div 10
(8) end;
(9) writeln ( min_digit)
end.
|
#include<stdio.h>
main(){
int N;
int digit, min_digit ;
(*)
(1) scanf("%d",&N);
(2) min_digit = 0;
(3) while (N > 0) {
(4) digit = N % 10;
(5) if (digit > min_digit)
(6) min_digit = digit;
(7) N = N / 10;
(8) }
(9) printf("%d", min_digit );
}
|
Последовательно выполните следующее:
1. Определите, что выведет программа при вводе числа 532 (выполните устно).
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
а) выпишите строку, в которой сделана ошибка;
б) укажите, как надо исправить ошибку - приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, имеющую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
В качестве ответа загрузите исправленную программу, в которой добавлена строка на место (*). Строка должна содержать оператор вывода (с переходом на новую строку после выполнения) номеров строк, в которых допущена ошибка (выводить нужно ТОЛЬКО номера слитно без пробелов и запятых)
например:
Паскаль |
Си |
...
begin
(*) writeln('123');
... далее исправленная программа
end.
|
#include<stdio.h>
main(){
...
(*) printf("123\n");
... далее исправленная программа
}
|