Уровень A.
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. |
Известно, что программа написана с ошибками. Последовательно выполните три задания:
а) приведите пример таких чисел а, b, при которых программа неверно решает поставленную задачу;
б) укажите, как, по вашему мнению, нужно доработать программу (не используя сложные условия), чтобы не было случаев ее неправильной работы;
в) укажите, как можно доработать программу, чтобы она вместо вложенных операторов IF содержала один условный оператор со сложным условием.
Уровень B.
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. |
Последовательно выполните следующее:
а) приведите пример таких чисел x, y, при которых программа неверно решает поставленную задачу;
б) укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы; это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы.
Уровень C.
1) С клавиатуры вводится целое число от 1 до 1000, обозначающая сумму в рублях. Программа должна напечатать эту сумму прописью, например:
двадцать один рубль
сто семьдесят три рубля
девятьсот пятнадцать рублей
2) Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (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. |
Последовательно выполните следующее:
а) приведите пример таких чисел x, y, при которых программа неверно решает поставленную задачу;
б) укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы; это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы.
Уровень A.
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.
Напишите эффективную программу, которая получает последовательность чисел и следующие за ней признак конца и контрольное значение, а также проверяет правильность контрольного значения. Программа должна напечатать отчет следующего вида:
Получено .. чисел
Полученное контрольное значение: ….
Вычисленное контрольное значение:…
Контроль пройден (или – контроль не пройден)
Уровень B.
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 передается контрольное значение – наибольшее число, которое можно получить умножением двух различных элементов последовательности.
Напишите эффективную программу, которая получает последовательность чисел и следующие за ней признак конца и контрольное значение, а также проверяет правильность контрольного значения. Программа должна напечатать отчет следующего вида:
Получено .. чисел
Полученное контрольное значение: ….
Вычисленное контрольное значение:…
Контроль пройден (или – контроль не пройден)
Уровень C.
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, которое:
а) делится на 10;
б) может быть получено умножением двух различных чисел, входящих в полученную последовательность.
Напишите эффективную программу, которая получает последовательность чисел и следующие за ней признак конца и контрольное значение, а также проверяет правильность контрольного значения. Программа должна напечатать отчет следующего вида:
Получено .. чисел
Полученное контрольное значение: ….
Вычисленное контрольное значение:…
Контроль пройден (или – контроль не пройден)
Уровень A.
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).
Уровень B.
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).
Уровень C.
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
Уровень A.
1) Введите массив из 5 элементов с клавиатуры и найдите количество элементов, которые оканчиваются на 8 и делятся на 3.
2) Заполните массив случайными числами в интервале [100,999] и переставьте их по возрастанию средней цифры.
3) Заполните массив случайными числами в интервале [0,1000] и выведите номера всех элементов, которые равны последнему элементу.
Уровень B.
1) Введите массив из 5 элементов с клавиатуры и найдите количество элементов, старшая цифра которых равна 8.
2) Заполните массив случайными числами в интервале [100,999] и переставьте их по возрастанию суммы цифр.
3) Заполните массив случайными числами в интервале [0,1000] и выведите номера двух соседних элементов, произведение которых наибольшее.
Уровень C.
1) Введите массив из 5 элементов с клавиатуры и найдите количество элементов, запись которых в двоичной системе – палиндром (например, 101012 = 21).
2) Заполните массив случайными числами в интервале [100,999] и переставьте их по возрастанию количества делителей.
3) Заполните массив случайными числами в интервале [0,1000] и выведите номера трёх различных минимальных элементов. Разрешается сделать только один проход по массиву.
Уровень A.
1) С клавиатуры вводится символьная строка. Определите, сколько в ней цифр.
2) С клавиатуры вводится предложение, в котором каждые два слова разделены ровно пробелом. Определите, сколько слов в этом предложении.
3) Напишите функцию, которая удаляет из переданной ей символьной строки все символы '<' и '>'.
Уровень B.
1) С клавиатуры вводится символьная строка. Определите, какой символ встречается в ней чаще всего.
2) С клавиатуры вводится предложение, в котором слова разделены пробелами. Определите, сколько слов в этом предложении начинается на букву «а».
3) Напишите функцию, которая удаляет из переданной ей символьной строки все лишние пробелы, заменяя повторяющиеся пробелы на один пробел.
Уровень C.
1) С клавиатуры вводится символьная строка длиной. Определите, сколько раз встречается в строке каждый из входящих в нее символов.
2) С клавиатуры вводится предложение, в котором слова разделены пробелами. Определите, сколько слов в этом предложении начинается и заканчивается на одну и ту же букву.
3) Напишите функцию, которая удаляет из переданной ей символьной строки все символы, заключенные в угловые скобки '<' и '>' (вместе с этими скобками).
Уровень A. В каждой строке файла записано три числа, каждое из которых находится в интервале [0,255]. Эти числа обозначают красную, зелёную и синюю составляющие цвета в цветовой модели RGB. Запишите в другой файл полные коды заданных цветов в виде целых чисел (код цвета = 255·255·R + 255·G + B).
Уровень B. В каждой строке файла записано три числа, каждое из которых находится в интервале [0,255]. Эти числа обозначают красную, зелёную и синюю составляющие цвета в цветовой модели RGB. Запишите в другой файл полные коды заданных цветов в виде целых чисел в шестнадцатеричной системе счисления (цвет (128,255,255) запишется как 80FFFF).
Уровень C. В файле записаны данные о результатах сдачи экзаменов по математике, русскому языку и физике. Каждая строка содержит фамилию, имя и три целых числа – количество баллов, набранных участником по каждому предмету:
<Фамилия> <Имя> <Математика> <Русский язык> <Физика>
Вывести в другой файл данные учеников, которые получили в сумме больше 240 баллов. Список должен быть отсортирован по убыванию балла. Формат выходных данных:
1) П. Иванов 284
2) И. Петров 275
...
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.