• Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 10^9, и выводится сумма цифр этого числа. Программист торопился и написал программу неправильно:
    var N: longint;
    sum, d: integer;
    begin
    readln(n);
    sum :=0;
    while N > 0 do begin
    d := N mod 10;
    N := N div 10;
    sum := sum + 1;
    end;
    writeln(sum);
    end.
    Последовательно выполните следующее.
    1. Напишите, что выведет эта программа при вводе числа 256.
    2. Приведите пример такого трехзначного числа, при вводе которого программа выдаёт правильный результат.
    3. Найдите все ошибки в этой программе ( их может быть одна или несколько).

Ответы 1

  • 1) При вводе числа 256 программа выведет 3, т.к.ввели n=256n>0 ? - да, значит дальше идёт блок из цикла, и будет он повторятся до тех пор пока n будет >0.d:=256 mod 10d:=6, т.к. mod берёт остаток от деления.n:=256 div 10n:=25, т.к. div делит нацело и остаток не берёт.sum:=sum+1;sum:=1;______________________цикл первый раз закончился и опять проверяется условие n>0, если да, то опять запускает цикл. n:=25>0d:=25 mod 10d:=5n:=25 div 10n:=2sum:=1+1sum:=2;______________________опять закончился цикл и проверяется условие n>0, n:=2>0d:=2 mod 10;d:=2;n:=2 div 10n:=0sum:=2+1;sum:=3;____________________заканчивается цикл и проверяется условие n>0? n:=0 >0 - нет. цикл заканчивается и выводится значение sum.Ответ: 3.2) 120, 210, 111 и т.д.
    • Автор:

      joeyiowd
    • 6 лет назад
    • 0
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years