Главная страница

Алгоритмизация и программирование Контрольные работы Ветвления


Скачать 166 Kb.
НазваниеАлгоритмизация и программирование Контрольные работы Ветвления
Дата30.11.2021
Размер166 Kb.
Формат файлаdoc
Имя файлаkrab10-8.doc
ТипДокументы
#286733

И
30.11.2021
нформатика, 10 класс К.Ю. Поляков, Е.А. Ере
мин
  1. Алгоритмизация и программирование

Контрольные работы

Ветвления




  1. С клавиатуры вводится трёхзначное число. Нужно вывести ответ «Да», если все его цифры четные, и ответ «Нет» в остальных случаях.

  2. Требовалось написать программу, которая определяет, имеется ли среди введенных с клавиатуры положительных целых чисел а и Ь хотя бы одно четное. Была написана следующая программа:

нач

цел a, b

ввод a, b

a:=mod(a,2)

если a>0 то b:=mod(b,2) все

если b>0 то

вывод "четных чисел нет"

иначе

вывод "четное число есть"

все

кон

var a, b: integer;

begin

readln(a, b);

a := a mod 2;

if a > 0 then b := b mod 2;

if b > 0 then

writeln ('четных чисел нет')

else

writeln ('четное число есть');

end.

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

  1. приведите пример таких чисел а, b, при которых программа неверно решает поставленную задачу;

  2. укажите, как, по вашему мнению, нужно доработать программу (не используя сложные условия), чтобы не было случаев ее неправильной работы;

  3. укажите, как можно доработать программу, чтобы она вместо вложенных операторов IF содержала один условный оператор со сложным условием.



  1. С клавиатуры вводится трёхзначное число. Нужно вывести ответ «Да», если все его цифры четные, и ответ «Нет» в остальных случаях. Если введено не трёхзначное число, должно быть выведено сообщение «Неверное число».

  2. Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (x, y – действительные числа) и определяет принадлежность точки заштрихованной области, включая ее границы. Программист торопился и написал программу неправильно. Вот она:

нач

вещ x, y

ввод x, y

если y >= -1 то

если y <= sin(x) то

если y >= x-1 то

вывод "принадлежит"

иначе

вывод "не принадлежит"

все

все

все

кон

var x,y: real;

begin

readln(x,y);

if y >= -1 then

if y <= sin(x) then

if y >= x-1 then

write('принадлежит')

else

write('не принадлежит')

end.

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

  1. приведите пример таких чисел x, y, при которых программа неверно решает поставленную задачу;

  2. укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы; это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы.



  1. С клавиатуры вводится целое число от 1 до 1000, обозначающая сумму в рублях. Программа должна напечатать эту сумму прописью, например:

д вадцать один рубль

сто семьдесят три рубля

девятьсот пятнадцать рублей

  1. Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (x, y – действительные числа) и определяет принадлежность точки заштрихованной области, включая ее границы. Программист торопился и написал программу неправильно. Вот она:

нач

вещ x, y

ввод x, y

если y<=3-x*x то

если y>=0 то

если y>=x+1 то

вывод "принадлежит"

иначе

вывод "не принадлежит"

все

все

все

кон

var x,y: real;

begin

readln(x,y);

if y<=3-x*x then

if y>=0 then

if y>=x+1 then

write('принадлежит')

else

write('не принадлежит')

end.

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

  1. приведите пример таких чисел x, y, при которых программа неверно решает поставленную задачу;

  2. укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы; это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы.

Контрольная работа

Циклы




  1. Определите значение переменной s после выполнения фрагмента программы:

    s:=0

    k:=0

    нц пока s < 1024

    s:=s+10

    k:=k+1

    кц

    s:=0;

    k:=0;

    while s < 1024 do begin

    s:=s+10;

    k:=k+1;

    end;

  2. Определите значение переменной s после выполнения фрагмента программы:

    s:=0

    нц для к от -3 до 5

    s:=s+к

    кц

    s:=0;

    for k:=-3 to 5 do begin

    s:=s+k;

    end;

  3. По каналу связи передается последовательность положительных целых чисел, все числа не превышают 1000, их количество заранее неизвестно. Каждое число передается отдельно. Признаком конца передаваемой последовательности является число 0. После числа 0 передается контрольное значение – наибольшее число из последовательности, которое делится на 10.

Напишите эффективную программу, которая получает последовательность чисел и следующие за ней признак конца и контрольное значение, а также проверяет правильность контрольного значения. Программа должна напечатать отчет следующего вида:

Получено .. чисел

Полученное контрольное значение: ….

Вычисленное контрольное значение:…

Контроль пройден (или – контроль не пройден)



  1. Укажите наименьшее и наибольшее из таких чисел , при вводе которых алгоритм печатает сначала 3, а потом 6:

    цел x, L, M

    ввод x

    L:=0; M:=0

    нц пока x > 0

    L:= L + 1

    M:= M + mod(x,10)

    x:= div(x,10)

    кц

    вывод L, нс

    вывод M, нс

    var x, L, M: integer;

    begin

    readln(x);

    L:=0; M:=0;

    while x > 0 do begin

    L:= L + 1;

    M:= M + x mod 10;

    x:= x div 10;

    end;

    writeln(L); write(M);

    end.

  2. Определите значение переменной s после выполнения фрагмента программы:

    s:=0

    нц для к от 1 до 5

    нц для j от 1 до k

    s:=s+к

    кц

    кц

    s:=0;

    for k:=1 to 5 do

    for j:=1 to k do

    s:=s+k;

  3. По каналу связи передается последовательность положительных целых чисел, все числа не превышают 1000, их количество заранее неизвестно. Каждое число передается отдельно. Признаком конца передаваемой последовательности является число 0. После числа 0 передается контрольное значение – наибольшее число, которое можно получить умножением двух различных элементов последовательности.

Напишите эффективную программу, которая получает последовательность чисел и следующие за ней признак конца и контрольное значение, а также проверяет правильность контрольного значения. Программа должна напечатать отчет следующего вида:

Получено .. чисел

Полученное контрольное значение: ….

Вычисленное контрольное значение:…

Контроль пройден (или – контроль не пройден)



  1. Ниже записана программа. Получив на вход число , эта программа печатает два числа, и . Укажите максимальное и минимальное числа, при вводе которых алгоритм печатает сначала 3, а потом 7.

    цел x, L, M

    ввод x

    L:=0; M:=0

    нц пока x > 0

    L:= L + 1

    если mod(x,2) = 1 то

    M:= M + div(mod(x,10),2)

    все

    x:= div(x,10)

    кц

    вывод L, нс

    вывод M, нс

    var x, L, M: integer;

    begin

    readln(x);

    L:=0; M:=0;

    while x > 0 do begin

    L:= L + 1;

    if x mod 2 = 1 then

    M:= M +

    (x mod 10) div 2;

    x:= x div 10;

    end;

    writeln(L); write(M);

    end.

  2. Определите значение переменной s после выполнения фрагмента программы:

    s:=0

    нц для к от 1 до 5

    нц для j от 1 до k

    нц для m от 1 до j

    s:=s+к+j+m

    кц

    кц

    кц

    s:=0;

    for k:=1 to 5 do

    for j:=1 to k do

    for m:=1 to j do

    s:=s+k+j+m;

  3. По каналу связи передается последовательность положительных целых чисел, все числа не превышают 1000, их количество заранее неизвестно. Каждое число передается отдельно. Признаком конца передаваемой последовательности является число 0. После числа 0 передается контрольное значение – наибольшее число X, которое:

        1. делится на 10;

        2. может быть получено умножением двух различных чисел, входящих в полученную последовательность.

Напишите эффективную программу, которая получает последовательность чисел и следующие за ней признак конца и контрольное значение, а также проверяет правильность контрольного значения. Программа должна напечатать отчет следующего вида:

Получено .. чисел

Полученное контрольное значение: ….

Вычисленное контрольное значение:…

Контроль пройден (или – контроль не пройден)

Контрольная работа

Процедуры и функции




  1. Определите результат работы функции при входном значении, равном 123456:

    алг цел qq(цел x0)

    нач

    цел i, s=0, x

    x:=x0

    нц для i от 1 до 3

    s:=s+mod(x,10)

    x:=div(x,10)

    кц

    знач:=s

    кон

    function qq(x: integer):integer;

    var i, s: integer;

    begin

    s:=0;

    for i:=1 to 3 do begin

    s := s + x mod 10;

    x := x div 10;

    end;

    qq := s;

    end;

  2. Напишите процедуру, которая выводит на экран переданное ей число в системе счисления, которая задается вторым параметром (от 2 до 10).



  1. Определите результат работы функции входном значении, равном 123456:

    алг цел qq(цел x0, y)

    нач

    цел i, s=0, x

    x:=x0

    нц пока x > 0

    s:= 10*s + mod(x,10)

    x:= div(x,10)

    кц

    знач:= s

    кон

    function qq(x: integer):integer;

    var i, s: integer;

    begin

    s:=0;

    while x > 0 do begin

    s:= 10*s + x mod 10;

    x:= x div 10;

    end;

    qq:= s;

    end;

  2. Напишите процедуру, которая переводит переданное ей натуральное число в систему счисления, которая задается вторым параметром (от 2 до 20).



  1. Определите результат работы функции при входных значениях, равных 123456 и 78901:

    алг цел qq(цел x0, y0)

    нач

    цел i, s=0, x, y

    x:=x0; y:=y0

    нц пока x > 0 и y > 0

    s:= 10*s + mod(x+y,10)

    x:= div(x,10)

    y:= div(y,10)

    кц

    знач:= s

    кон

    function qq(x,y: integer)

    :integer;

    var i, s: integer;

    begin

    s:=0;

    while (x > 0) and (y > 0) do

    begin

    s:= 10*s + (x+y) mod 10;

    x:= x div 10;

    y:= y div 10;

    end;

    qq:= s;

    end;

  2. Напишите процедуру, которая выводит на экран переданное ей число в негадвоичной системе счисления, основание которой равно (–2). Например,

1011(-2)=1·(-2)3 +0·(-2)2 +1·(-2)1 + 1·(-2)0 =-8-2+1=-9

Контрольная работа

Массивы




  1. Введите массив из 5 элементов с клавиатуры и найдите количество элементов, которые оканчиваются на 8 и делятся на 3.

  2. Заполните массив случайными числами в интервале [100,999] и переставьте их по возрастанию средней цифры.

  3. Заполните массив случайными числами в интервале [0,1000] и выведите номера всех элементов, которые равны последнему элементу.



  1. Введите массив из 5 элементов с клавиатуры и найдите количество элементов, старшая цифра которых равна 8.

  2. Заполните массив случайными числами в интервале [100,999] и переставьте их по возрастанию суммы цифр.

  3. Заполните массив случайными числами в интервале [0,1000] и выведите номера двух соседних элементов, произведение которых наибольшее.



  1. Введите массив из 5 элементов с клавиатуры и найдите количество элементов, запись которых в двоичной системе – палиндром (например, 101012 = 21).

  2. Заполните массив случайными числами в интервале [100,999] и переставьте их по возрастанию количества делителей.

  3. Заполните массив случайными числами в интервале [0,1000] и выведите номера трёх различных минимальных элементов. Разрешается сделать только один проход по массиву.


Контрольная работа

Символьные строки




  1. С клавиатуры вводится символьная строка. Определите, сколько в ней цифр.

  2. С клавиатуры вводится предложение, в котором каждые два слова разделены ровно пробелом. Определите, сколько слов в этом предложении.

  3. Напишите функцию, которая удаляет из переданной ей символьной строки все символы '<' и '>'.



  1. С клавиатуры вводится символьная строка. Определите, какой символ встречается в ней чаще всего.

  2. С клавиатуры вводится предложение, в котором слова разделены пробелами. Определите, сколько слов в этом предложении начинается на букву «а».

  3. Напишите функцию, которая удаляет из переданной ей символьной строки все лишние пробелы, заменяя повторяющиеся пробелы на один пробел.



  1. С клавиатуры вводится символьная строка длиной. Определите, сколько раз встречается в строке каждый из входящих в нее символов.

  2. С клавиатуры вводится предложение, в котором слова разделены пробелами. Определите, сколько слов в этом предложении начинается и заканчивается на одну и ту же букву.

  3. Напишите функцию, которая удаляет из переданной ей символьной строки все символы, заключенные в угловые скобки '<' и '>' (вместе с этими скобками).



Контрольная работа

Файлы


  1. В каждой строке файла записано три числа, каждое из которых находится в интервале [0,255]. Эти числа обозначают красную, зелёную и синюю составляющие цвета в цветовой модели RGB. Запишите в другой файл полные коды заданных цветов в виде целых чисел (код цвета = 256·256·R + 256·G + B).

  2. В каждой строке файла записано три числа, каждое из которых находится в интервале [0,255]. Эти числа обозначают красную, зелёную и синюю составляющие цвета в цветовой модели RGB. Запишите в другой файл полные коды заданных цветов в виде целых чисел в шестнадцатеричной системе счисления (цвет (128,255,255) запишется как 80FFFF).

  3. В файле записаны данные о результатах сдачи экзаменов по математике, русскому языку и физике. Каждая строка содержит фамилию, имя и три целых числа – количество баллов, набранных участником по каждому предмету:

<Фамилия> <Имя> <Математика> <Русский язык> <Физика>

Вывести в другой файл данные учеников, которые получили в сумме больше 240 баллов. Список должен быть отсортирован по убыванию балла. Формат выходных данных:

  1. П. Иванов 284

  2. И. Петров 275

...

http://kpolyakov.spb.ru



написать администратору сайта