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


Каталог заданий.
Работа с цифрами числа

Пройти тестирование по этим заданиям
Вернуться к каталогу заданий
Версия для печати и копирования в MS Word
1
Задание 24 № 7769

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число x, не превосходящее 1000, и выводится количество значащих цифр в двоичной записи этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на пяти языках программирования.)

 

 

БейсикPython

INPUT x

cnt = 0

WHILE x > 0

cnt = cnt + x MOD 2

x = x \ 10

WEND

PRINT cnt

END

x = int(input())

cnt = 0

while x > 0:

    cnt = cnt+x % 2

    x = x // 10

print(cnt)

ПаскальАлгоритмический язык

var x,cnt: integer;

begin

readln(x);

cnt := 0;

while x > 0 do

begin

cnt:=cnt + x mod 2;

x := x div 10

end;

writeln(cnt);

end.

алг

нач

цел x, cnt

ввод x

cnt := 0

нц пока x > 0

cnt := cnt+mod(x,2)

x := div(x, 10)

кц

вывод cnt

кон

Си++

#include <iostream>

using namespace std;

int main()

{

int x,cnt;

cin >> x;

cnt = 0;

while (x > 0)

{

cnt = cnt + x%2;

x = x /10;

}

cout « cnt « endl;

}

 

 

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

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

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

3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк.

 

Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки.

 

Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.


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


2
Задание 24 № 8112

На обработку поступает натуральное число, не превышающее 109. Нужно написать программу, которая выводит на экран максимальную цифру числа, кратную 3. Если в числе нет цифр, кратных 3, требуется на экран вывести «NO». Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.

Напоминание: 0 делится на любое натуральное число.

 

 

БейсикPython

DIM N, DIGIT, MAXDIGIT AS LONG

INPUT N

MAXDIGIT = N MOD 10

WHILE N > 0

    DIGIT = N MOD 10

    IF DIGIT MOD 3 = 0 THEN

        IF DIGIT > MAXDIGIT THEN

            MAXDIGIT = DIGIT

        END IF

    END IF

    N = N \ 10

WEND

IF MAXDIGIT = 0 THEN

    PRINT "NO"

ELSE

    PRINT MAXDIGIT

END IF

N = int(input())

maxDigit = N % 10

while N > 0:

    digit = N % 10

    if digit % 3 == 0:

        if digit > maxDigit:

            maxDigit = digit

    N = N // 10

if maxDigit == 0:

    print("NO")

else:

    print(maxDigit)

ПаскальАлгоритмический язык

var N,digit,maxDigit: longint;

begin

    readln(N);

    maxDigit := N mod 10;

    while N > 0 do

    begin

        digit := N mod 10;

        if digit mod 3 = 0 then

            if digit > maxDigit then

                maxDigit := digit;

        N := N div 10;

    end;

    if maxDigit = 0 then

        writeln('NO')

    else

        writeln(maxDigit)

end.

алг

нач

    цел N, digit, maxDigit

    ввод N

    maxDigit := mod(N,10)

    нц пока N > 0

        digit := mod(N,10)

            если mod(digit, 3) = 0 то

            если digit > maxDigit то

                maxDigit := digit

            все

        все

        N := div(N,10)

    кц

    если maxDigit = 0 то

        вывод "NO"

    иначе

        вывод maxDigit

    все

кон

Си++

#include <iostream>

using namespace std;

int main()

{

    int N, digit, maxDigit;

    cin >> N;

    maxDigit = N % 10;

    while (N > 0)

    {

        digit = N % 10;

        if (digit % 3 == 0)

            if (digit > maxDigit)

                maxDigit = digit;

        N = N / 10;

    }

    if (maxDigit == 0)

        cout << "NO";

    else

        cout << maxDigit<< endl;

    return 0;

}

 

 

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

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

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

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

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки.

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

Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

Источник: ЕГЭ 05.05.2015. До­сроч­ная волна.

3
Задание 24 № 9375

На обработку поступает положительное целое число, не превышающее 109. Нужно написать программу, которая выводит на экран сумму цифр этого числа, меньших 7. Если в числе нет цифр, меньших 7, требуется на экран вывести 0. Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.

 

 

БейсикPython

DIM N, DIGIT, SUM AS LONG

INPUT N

SUM = 0

WHILE N > 0

    DIGIT = N MOD 10

    IF DIGIT < 7 THEN

        SUM = SUM + 1

    END IF

    N = N \ 10

WEND

PRINT DIGIT

N = int(input())

sum = 0

while N > 0:

    digit = N % 10

    if digit < 7:

        sum = sum + 1

    N = N // 10

print(digit)

ПаскальАлгоритмический язык

var N, digit, sum: longint;

begin

    readln(N);

    sum := 0;

    while N > 0 do

    begin

        digit := N mod 10;

        if digit < 7 then

            sum := sum + 1;

        N := N div 10;

    end;

    writeln(digit)

end.

алг

нач

    цел N, digit, sum

    ввод N

    sum := 0

    нц пока N > 0

        digit := mod(N,10)

        если digit < 7 то

            sum := sum + 1

        все

        N := div(N,10)

    кц

    вывод digit

кон

Си++

#include <iostream>

using namespace std;

int main()

{

    int N, digit, sum;

    cin >> N;

    sum = 0;

    while (N > 0)

    {

        digit = N % 10;

        if (digit < 7)

            sum = sum + 1;

        N = N / 10;

    }

    cout << digit<< endl;

    return 0;

}

 

 

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

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

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

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

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки.

Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.


Аналоги к заданию № 9375: 10487 10514 Все

Источник: Де­мон­стра­ци­он­ная вер­сия ЕГЭ—2016 по информатике.

4
Задание 24 № 5372

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится количество цифр этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

 

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

DIM N AS LONG

INPUT N

sum = 1

WHILE N > 1

N = N \ 10

sum = sum + 1

WEND

PRINT sum

END

var N: longint;

sum: integer;

begin

readln(N);

sum := 1;

while N > 1 do

begin

N := N div 10;

sum := sum + 1;

end;

writeln(sum);

end.

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

#include <iostream>

using namespace std;

int main()

{

long int N;

int sum;

cin >> N;

sum = 1;

while (N > 1)

{

N = N /10;

sum = sum + 1;

}

cout « sum « endl;

}

алг

нач

цел N, sum

ввод N

sum := 1

нц пока N > 1

N := div(N, 10)

sum := sum + 1

кц

вывод sum

кон

Python

n = int(input())

sum = 1

while n > 1:

    n //= 10

    sum += 1

print(sum)

 

 

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

 

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

2. Укажите одно число для которого эта программа будет работать верно.

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


Аналоги к заданию № 5372: 5436 9705 Все

Источник: ЕГЭ по ин­фор­ма­ти­ке 30.05.2013. Ос­нов­ная волна. Дальний Восток. Ва­ри­ант 1.

5
Задание 24 № 5468

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится произведение цифр этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

 

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

DIM N AS LONG

DIM product AS LONG

INPUT N

product = N mod 10

WHILE N >= 10

    digit = N MOD 10

    product = product*digit

    N = N \ 10

WEND

PRINT product

END

var N, product: longint;

    digit: integer;

begin

    readln(N);

    product := N mod 10;

    while N >= 10 do

    begin

        digit := N mod 10;

        product := product*digit;

        N := N div 10;

    end;

    writeln(product);

end.

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

#include <iostream>

using namespace std;

int main()

{

    long int N, product;

    int digit;

    cin >> N;

    product = N % 10;

    while (N >= 10)

    {

        digit = N % 10;

        product = product*digit;

        N = N / 10;

    }

    cout << product;

}

алг

нач

    цел N, digit, product

    ввод N

    product := mod(N, 10)

    нц пока N >= 10

        digit := mod(N, 10)

        product := product*digit

        N := div(N, 10)

    кц

    вывод product

кон

Python

n = int(input())

product = n % 10

while n >= 10:

    digit = n % 10

    product = product*digit

    n //= 10

print(product)

 

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

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

2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку, — приведите правильный вариант строки.

 

Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.


Аналоги к заданию № 5468: 5596 9659 Все

Источник: ЕГЭ по ин­фор­ма­ти­ке 30.05.2013. Ос­нов­ная волна. Сибирь. Ва­ри­ант 1.

Пройти тестирование по этим заданиям