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