СДАМ ГИА: РЕШУ ЕГЭ
Образовательный портал для подготовки к экзаменам
Информатика
≡ информатика
сайты - меню - вход - новости


Задания
Версия для печати и копирования в MS Word
Задание 24 № 6789

Требовалось написать программу, при выполнении которой с клавиатуры вводится натуральное число, не превосходящее 108, и выводится его первая (старшая) цифра. Ученик написал такую программу:

 

БейсикПаскаль

DIM N AS LONG

INPUT N

WHILE N>10

N = N MOD 10

WEND

PRINT N

END

var n: longint;

begin

read(n);

while n>10 do begin

n := n mod 10

end;

write(n);

end.

Си++Алгоритмический

#include <iostream>

using namespace std;

int main(){

long int n;

cin >> n;

while (n>10) {

n = n%10;

}

cout << n;

}

алг

нач

цел n

ввод n

нц пока n>10

n := mod(n,10)

кц

вывод n

кон

Python

n = int(input())

while n > 10:

    n %= 10

print(n)

 

Последовательно выполните следующее.

1. Напишите, что выведет эта программа при вводе числа 1984.

2. Приведите пример числа, при вводе которого программа выдаст верный ответ.

3. Найдите в программе все ошибки (их может быть одна или несколько). Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде. Обратите внимание: вам нужно исправить приведённую программу, а не написать свою. Вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые. Заменять следует только ошибочные строки: за исправления, внесённые в строки, не содержащие ошибок, баллы будут снижаться.

Решение.

Элементы ответа:

 

1. При вводе числа 1984 программа выведет число 4. (Комментарий Приведённая программа выводит ответ 10 для n = 10 и последнюю цифру для любого другого значения n.)

2. Пример числа, для которого программа даёт верный ответ: 2012. (Комментарий Программа даст верный ответ для любого числа, у которого совпадают первая и последняя цифры. В частности, для любого однозначного числа.)

3. Ошибки содержатся в двух строках программы:

1) Неверное условие цикла: неравенство должно быть нестрогим, иначе можно в качестве ответа получить 10.

2) Неверная операция отбрасывания последней цифры: вместо нахождения остатка нужно использовать целочисленное деление.

 

Пример исправления для языка Паскаль:

 

Первая строка с ошибкой: while n>10 do begin. Исправленная строка: while n>=10 do begin. Другой способ исправления: while n>9 do begin

 

Вторая строка с ошибкой: n := n mod 10. Исправленная строка: n := n div 10.

 

В программах на других языках ошибочные строки и их исправления аналогичны.


Аналоги к заданию № 6789: 6821 Все