СДАМ ГИА






Каталог заданий. Работа с цифрами числа
Пройти тестирование по этим заданиям
Вернуться к каталогу заданий
Версия для печати и копирования в 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

int main()

{

int x,cnt;

scanf("%ld", &x);

cnt = 0;

while (x > 0)

{

cnt = cnt + x%2;

x = x /10;

}

printf("%d", cnt);

}

 

 

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

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

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

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

 

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

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

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

 

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


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

Источник: СтатГрад: Диагностическая работа по ин­фор­ма­ти­ке 26.01.2015 ва­ри­ант ИН10501.

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 <stdio.h>

int main()

{

    int N, digit, maxDigit;

    scanf("%d", &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)

        printf("NO");

    else

        printf("%d",maxDigit);

    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

int main()

{

    int N, digit, sum;

    scanf("%d", &N);

    sum = 0;

    while (N > 0)

    {

        digit = N % 10;

        if (digit < 7)

            sum = sum + 1;

        N = N / 10;

    }

    printf("%d",digit);

    return0;

}

 

 

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

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<stdio.h>

int main()

{

long int N;

int sum;

scanf("%ld", &N);

sum = 1;

while (N > 1)

{

N = N /10;

sum = sum + 1;

}

printf("%d", sum);

}

алг

нач

цел N, sum

ввод N

sum := 1

нц пока N > 1

N := div(N, 10)

sum := sum + 1

кц

вывод 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 <stdio.h>

int main()

{

    long int N, product;

    int digit;

    scanf("%ld", &N);

    product = N % 10;

    while (N >= 10)

    {

        digit = N % 10;

        product = product*digit;

        N = N / 10;

    }

    printf("%ld", product);

}

алг

нач

    цел N, digit, product

    ввод N

    product := mod(N, 10)

    нц пока N >= 10

        digit := mod(N, 10)

        product := product*digit

        N := div(N, 10)

    кц

    вывод product

кон

 

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

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

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

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

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

 

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


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

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

6
Задание 24 № 5500

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

 

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

DIM N AS LONG

INPUT N

max_digit = 9

WHILE N > 9

    digit = N MOD 10

    IF max_digit < digit THEN

        max_digit = digit

    END IF

        N = N \ 10

WEND

PRINT max digit

END

var N: longint;

    digit, max_digit: integer;

begin

    readln(N);

    max_digit := 9;

    while N > 9 do

    begin

        digit := N mod 10;

        if max_digit < digit then

            max_digit := digit;

        N := N div 10;

    end;

    writeln(max_digit);

end.

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

#include <stdio.h>

int main()

{

    long int N;

    int digit, max digit;

    scanf("%ld", &N);

    max_digit = 9;

    while (N > 9)

    {

        digit = N % 10;

        if (max_digit < digit)

            max_digit = digit;

        N = N /10;

    }

    printf("%d", max_digit);

}

алг

нач

    цел N, digit, max_digit

    ввод N

    max_digit := 9

    нц пока N > 9

         digit := mod(N, 10)

        если max_digit < digit то

            max_digit := digit

        все

    N := div(N, 10)

    кц

    вывод max_digit

кон

 

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

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

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

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

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

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


Аналоги к заданию № 5500: 5852 5884 5948 5980 6014 Все

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

7
Задание 24 № 5532

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

 

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

DIM N AS LONG

INPUT N

sum = 0

WHILE N >= 9

    digit = N MOD 10

    sum = sum + digit

    N = N \ 10

WEND

PRINT sum

END

var N: longint;

    digit, sum: integer;

begin

    readln(N);

    sum := 0;

    while N >= 9 do

    begin

        digit := N mod 10;

        sum := sum + digit;

        N := N div 10;

    end;

    writeln(sum);

end.

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

#include <stdio.h>

int main()

{

    long int N;

    int digit, sum;

    scanf("%ld", &N);

    sum = 0;

    while (N >= 9)

    {

        digit = N % 10;

        sum = sum + digit;

        N = N / 10;

    }

    printf("%d", sum);

}

 

алг

нач

    цел N, digit, sum

    ввод N

    sum := 0

    нц пока N >= 9

        digit := mod(N, 10)

        sum := sum + digit

        N := div(N, 10)

    кц

    вывод sum

кон

 

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

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

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

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


Аналоги к заданию № 5532: 7681 7708 Все

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

8
Задание 24 № 6014

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

 

 

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

DIM N AS LONG

INPUT N

max_digit = 9

WHILE N >= 10

    digit = N MOD 10

    IF digit > max_digit THEN

        max_digit = digit

    END IF

    N = N \ 10

WEND

PRINT max_digit

END

var N: longint;

    digit, max_digit: integer;

begin

    readln(N);

    max_digit := 9;

    while N >= 10 do

    begin

        digit := N mod 10;

        if digit > max_digit then

            max_digit := digit;

        N := N div 10;

    end;

    writeln(max_digit);

end.

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

#include <stdio.h>

int main()

{

    long int N;

    int digit, max_digit;

    scanf("%ld", &N);

    max_digit = 9;

    while (N >= 10)

    {

        digit = N % 10;

        if (digit > max_digit)

            max_digit = digit;

        N = N /10;

    }

    printf("%d", max_digit);

}

алг

нач

    цел N, digit, max_digit

    ввод N

    max_digit := 9

    нц пока N >= 10

        digit := mod(N, 10)

        если digit > max_digit то

            max_digit := digit

        все

        N := div(N, 10)

    кц

    вывод max_digit

кон

 

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

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

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

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

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

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


9
Задание 24 № 6199

Требовалось на­пи­сать программу, при вы­пол­не­нии ко­то­рой с кла­ви­а­ту­ры счи­ты­ва­ет­ся на­ту­раль­ное число N, не пре­вос­хо­дя­щее 109, и вы­во­дит­ся сумма чётных цифр в де­ся­тич­ной за­пи­си этого числа или 0, если чётных цифр в за­пи­си нет. Уче­ник на­пи­сал такую программу:

 

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

DIM N AS LONG

INPUT N

S = 0

WHILE N > 1

IF N MOD 2 = 0

S = N MOD 10

END IF

N = N \ 10

WEND

PRINT S

END

var N: longint;

s: integer;

begin

readln(N);

s := 0;

while N > 1 do begin

if N mod 2 = 0 then begin

s := N mod 10;

end;

N := N div 10;

end;

write(s);

end.

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

#include <stdio.h>

void main()

{

long int N;

int s;

scanf("%ld",&N);

s = 0;

while (N > 1) {

if (N%2 == 0) {

s = N % 10;

}

N = N / 10;

}

printf("%d", s);

}

алг

нач

цел N, s

ввод N

s := 0

нц пока N > 1

если mod(N,2) = 0 то

s := mod(N,10)

все

N := div(N,10)

кц

вывод s

кон

 

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

 

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

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

3. Най­ди­те в про­грам­ме все ошиб­ки (их может быть одна или несколько).

 

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

Источник: МИОО: Тре­ни­ро­воч­ная работа по ин­фор­ма­ти­ке 08.10.2013 ва­ри­ант ИНФ10101.

10
Задание 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 <stdio.h>

void main(){

long int n;

scanf("%ld",&n);

while (n>10) {

n = n%10;

}

printf("%ld", n);

}

алг

нач

цел n

ввод n

нц пока n>10

n := mod(n,10)

кц

вывод n

кон

 

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

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

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

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


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

Источник: МИОО: Тре­ни­ро­воч­ная работа по ин­фор­ма­ти­ке 20.02.2014 ва­ри­ант ИН10601.

11
Задание 24 № 6853

Требовалось на­пи­сать программу, при вы­пол­не­нии ко­то­рой с кла­ви­а­ту­ры вво­дит­ся на­ту­раль­ное число, не пре­вос­хо­дя­щее 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 <stdio.h>

void main(){

long int n;

scanf("%ld",&n);

while (n>10) {

n = n%10;

}

printf("%ld", n);

}

алг

нач

цел n

ввод n

нц пока n>10

n := mod(n,10)

кц

вывод n

кон

 

 

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

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

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

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


12
Задание 24 № 6968

Требовалось на­пи­сать программу, ко­то­рая по­лу­ча­ет на вход на­ту­раль­ное число N, не пре­вос­хо­дя­щее 109, и вы­во­дит число, ко­то­рое по­лу­ча­ет­ся из N после уда­ле­ния всех единиц; по­ря­док осталь­ных цифр при этом не меняется. Например, число 19520125 долж­но быть пре­об­ра­зо­ва­но в число 952025. Число, в ко­то­ром все цифры — еди­ни­цы и нули, долж­но быть пре­об­ра­зо­ва­но в 0. Не­зна­ча­щие нули в стар­ших раз­ря­дах по­лу­чен­но­го числа пе­ча­тать не нужно.

Программист то­ро­пил­ся и на­пи­сал про­грам­му неправильно.

 

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

DIM N, R, T AS LONG

DIM d AS INTEGER

INPUT N

R = 0

T = 1

WHILE N > 0

d = N MOD 10

IF d <> 1 THEN

R = R + d * T

T = T + 1

END IF

N = N \ 10

WEND

PRINT T

END

var N, R, T: longint;

d: integer;

begin

readln(N);

R:=0;

T:=1;

while N>0 do begin

d := N mod 10;

if d<>1 then begin

R := R + d*T;

T := T+1

end;

N := N div 10;

end;

writeln(T);

end.

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

#include <stdio.h>

int main()

{

long int N, R, T;

int d;

scanf("%ld", &N);

R = 0;

T = 1;

while (N > 0) {

d = N % 10;

if (d != 1) {

R = R + d*T;

T = T+1;

}

N = N / 10;

}

printf("%ld", T);

}

алг

нач

цел N, R, T, d

ввод N

R := 0

T := 1

нц пока N > 0

d := mod(N, 10)

если d <> 1 то

R := R + d*T

T := T+1

все

N := div(N, 10)

кц

вывод T

кон

 

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

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

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

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

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

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


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

Источник: МИОО: Ди­а­гно­сти­че­ская ра­бо­та по ин­фор­ма­ти­ке 19.03.2014 Ва­ри­ант ИНФ10801.

13
Задание 24 № 7318

Дано на­ту­раль­ное число N, не пре­вос­хо­дя­щее 108. Не­об­хо­ди­мо найти и вы­ве­сти число, ко­то­рое по­лу­чит­ся при за­пи­си N спра­ва на­ле­во и уда­ле­нии всех единиц. Ве­ду­щие нули вы­во­дить не надо. Если в числе N нет цифр кроме еди­ниц и нулей, не­об­хо­ди­мо вы­ве­сти 0. Например, при вводе числа 1984 нужно вы­ве­сти 489, а при вводе 2001 нужно вы­ве­сти 2. Для ре­ше­ния этой за­да­чи уче­ник на­пи­сал такую программу:

 

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

DIM N, M AS LONG

DIM D AS INTEGER

INPUT N

M = 0

WHILE N>=1

D = N MOD 10

IF D>1 THEN

M = 10*D + M

END IF

N = (N – D) \ 10

WEND

PRINT M

END

var n, m: longint;

d: integer;

begin

read(n);

m := 0;

while n>=1 do begin

d := n mod 10;

if d > 1 then begin

m := 10*d + m;

end;

n := (n – d) div 10;

end;

write(m);

end.

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

#include <stdio.h>

void main(){

long int n, m;

int d;

scanf("%ld",&n);

m = 0;

while (n>=1) {

d = n%10;

if (d>1) {

m = 10*d + m;

}

n = (n – d) / 10;

}

printf("%ld", m);

}

алг

нач

цел n, m

цел d

ввод n

m := 0

нц пока n>=1

d := mod(n,10)

если d>1 то

m := 10*d + m

все

n := div(n-d,10)

кц

вывод m

кон

 

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

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

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

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

 

Обратите внимание: Вам нужно ис­пра­вить приведённую программу, а не на­пи­сать свою. Вы мо­же­те толь­ко за­ме­нять оши­боч­ные строки, но не мо­же­те уда­лять стро­ки или до­бав­лять новые. За­ме­нять сле­ду­ет толь­ко оши­боч­ные строки: за исправления, внесённые в строки, не со­дер­жа­щие ошибок, баллы будут снижаться.

Источник: МИОО: Тре­ни­ро­воч­ная работа по ин­фор­ма­ти­ке 30.04.2014 ва­ри­ант ИН10901.

14
Задание 24 № 7350

Дано на­ту­раль­ное число N, не пре­вос­хо­дя­щее 108. Не­об­хо­ди­мо найти и вы­ве­сти число, ко­то­рое по­лу­чит­ся при за­пи­си N спра­ва на­ле­во и уда­ле­нии всех девяток. Ве­ду­щие нули вы­во­дить не надо. Если в числе N нет цифр кроме де­вя­ток и нулей, не­об­хо­ди­мо вывести 0. Например, при вводе числа 1984 нужно вы­ве­сти 481, а при вводе 2009 нужно вы­ве­сти 2. Для ре­ше­ния этой за­да­чи ученик на­пи­сал такую программу:

 

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

DIM N, M AS LONG

DIM D AS INTEGER

INPUT N

M = 0

WHILE N>1

D = N MOD 10

IF D<9 THEN

M = M + D

END IF

N = N \ 10

WEND

PRINT M

END

var n, m: longint;

d: integer;

begin

read(n);

m := 0;

while n>1 do begin

d := n mod 10;

if d < 9 then begin

m := m + d;

end;

n := n div 10;

end;

write(m);

end.

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

#include <stdio.h>

void main(){

long int n, m;

int d;

scanf("%ld",&n);

m = 0;

while (n>1) {

d = n%10;

if (d<9) {

m = m + d;

}

n = n / 10;

}

printf("%ld", m);

}

алг

нач

цел n, m

цел d

ввод n

m := 0

нц пока n>1

d := mod(n,10)

если d<9 то

m := m + d

все

n := div(n,10)

кц

вывод m

кон

 

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

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

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

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

 

Обратите внимание: Вам нужно ис­пра­вить приведённую программу, а не на­пи­сать свою. Вы мо­же­те толь­ко за­ме­нять оши­боч­ные строки, но не мо­же­те уда­лять стро­ки или до­бав­лять новые. За­ме­нять сле­ду­ет толь­ко оши­боч­ные строки: за исправления, внесённые в строки, не со­дер­жа­щие ошибок, баллы будут снижаться.

Источник: МИОО: Тре­ни­ро­воч­ная ра­бо­та по ин­фор­ма­ти­ке 30.04.2014 ва­ри­ант ИН10902.

15
Задание 24 № 7425

Программист писал программу, для опре­де­ле­ния количества цифр в целом по­ло­жи­тель­ном числе, не боль­шем 10^9. Про­грам­мист торопился, и до­пу­стил ошибку. (Ниже для Ва­ше­го удоб­ства про­грам­ма пред­став­ле­на на четырёх язы­ках программирования.)

 

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

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<stdio.h>

Int main()

{

long int N;

int sum;

scanf(“%ld”, &N);

sum = 1;

while (N > 1)

{

N = N / 10;

sum = sum + 1;

}

printf(“%d”, sum);

}

алг

нач

цел N, sum

ввод N

sum := 1

нц пока N > 1

N := div(N, 10)

sum := sum + 1

КЦ

вывод sum

КОН

 

 

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

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

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

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

Источник: РЕШУ ЕГЭ — Пред­эк­за­ме­на­ци­он­ная ра­бо­та 2014 по информатике.

16
Задание 24 № 5692

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

 

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

DIM N AS LONG

INPUT N

max_digit = 10

WHILE N >= 10

    digit = N MOD 10

    IF max_digit < digit THEN

        max_digit = digit

    END IF

        N = N \ 10

WEND

PRINT max_digit

END

var N: longint;

    digit, max_digit: integer;

begin

    readln(N);

    max_digit := 10;

    while N >= 10 do

    begin

        digit := N mod 10;

        if max_digit < digit then

            max_digit := digit;

        N := N div 10;

    end;

    writeln(max_digit);

end.

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

#include <stdio.h>

int main ()

{

    long int N;

    int digit, max_digit;

    scanf("%ld", &N);

    max digit = 10;

    while (N >= 10)

    {

        digit = N % 10;

        if (max_digit < digit)

            max_digit = digit;

        N = N / 10;

    }

    printf("%d", max_digit);

}

 

алг

нач

    цел N, digit, max_digit

    ввод N

    max_digit := 10

    нц пока N >= 10

        digit := mod(N, 10)

        если max_digit < digit то

            max_digit := digit

        все

        N := div(N, 10)

    кц

    вывод max_digit

кон

 

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

 

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

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

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

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

 

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

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

17
Задание 24 № 12440

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

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

 

 

БейсикPython

DIM N, DIGIT, COUNT AS LONG

INPUT N

COUNT = 1

WHILE N > 0

    DIGIT = N MOD 10

    IF DIGIT MOD 5 = 0 THEN

        COUNT = COUNT + DIGIT

    END IF

    N = N \ 10

WEND

IF COUNT = 0 THEN

    PRINT "NO"

ELSE

    PRINT COUNT

END IF

N = int(input())

count = 1

while N > 0:

    digit = N % 10

    if digit % 5 == 0:

        count = count + digit

    N = N // 10

if count == 0:

    print("NO")

else:

    print(count)

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

var N, digit, count: longint;

begin

    readln(N);

    count := 1;

    while N > 0 do

    begin

        digit := N mod 10;

        if digit mod 5 = 0 then

            count := count + digit;

        N := N div 10;

    end;

    if count = 0 then

        writeln('NO')

    else

        writeln(count)

end.

 

алг

нач

    цел N, digit, count

    ввод N

    count := 1

    нц пока N > 0

        digit := mod(N,10)

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

            count := count + digit

        все

        N := div(N,10)

    кц

    если count = 0 то

        вывод "NO"

    иначе

        вывод count

    все

кон

 

Си

#include

int main()

{

    int N, digit, count;

    scanf("%d", &N);

    count = 1;

    while (N > 0)

    {

        digit = N % 10;

        if (digit % 5 == 0)

            count = count + digit;

        N = N / 10;

    }

    if (count == 0)

        printf("NO");

    else

        printf("%d",count);

    return 0;

}

 

 

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

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

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

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

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

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

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

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

Обратите внимание, что требуется найти ошибки в имеющейся программе,

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

Источник: Задания для школы экспертов. Информатика. 2016 год.

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



     О проекте · Редакция

© Гущин Д. Д., 2011—2017


СПб ГУТ! С! Ф! У!