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