Читайте также: |
|
Для записи ответов на задания этой части (24–27)используйте БЛАНКОТВЕТОВ № 2. Запишите сначала номер задания (24, 25 и т. д.), а затем полное решение. Ответы записывайте чётко и разборчиво. |
24 На обработку поступает последовательность из четырёх неотрицательных целых чисел (некоторые числа могут быть одинаковыми). Нужно написать программу, которая выводит на экран количество чётных чисел в исходной последовательности и сумму таких чисел. Если чётных чисел нет, требуется на экран выводить «NO». Известно, что вводимые числа не превышают 1000. Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на четырёх языках программирования.
Бейсик | Паскаль |
СONST n = 4 Count = 0 SUM = 0 FOR I = 1 TO n INPUT x IF x mod 2 = 0 THEN count = count + 1 sum = x END IF NEXT I IF sum > 0 THEN PRINT count PRINT sum ELSE PRINT “NO” ENDIF | const n = 4; var i, x: integer; var sum, count: integer; begin count:= 0; sum:= 0; for i:= 1 to n do begin read(x); if x mod 2 = 0 then begin count:= count + 1; sum:= x end end; if sum > 0 then begin writeln(count); writeln(sum) end else writeln(‘NO’) end. |
Си | Алгоритмический язык |
#include <stdio.h> #define n 4 void main (void) { int i, x; int sum, count; count = 0; sum = 0; for (i = 1; i <= n; i++) { scanf(“%d”,&x); if (x % 2 == 0) { count++; sum = x; } } if (sum > 0) { printf(“%d\n”, count); printf(“%d\n”, sum); } else printf(“NO\n”); } | алг нач цел n = 4 цел i, x цел sum, count count:= 0 sum:= 0 нцдля i от 1 до n ввод х если mod(x,2) = 0 то count:= count + 1 sum:= x все кц если sum > 0 то вывод count, нс вывод sum, нс иначе вывод “NO” все кон |
Последовательно выполните следующее.
1.Напишите, что выведет эта программа при вводе последовательности: 20, 93, 40, 39
2.Приведте пример такой последовательности, содержащей хотя бы одно чётное число что, несмотря на ошибки, программа печатает правильный ответ.
3.Найлите все ошибки в этой программе (их может быть одно или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
1)выпишите строку, в которой сделана ошибка;
2)укажите, как исправить ошибку, т.е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в имеющейся программе а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Примечание: 0 – чётное число.
25 Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 100 – баллы учащихся выпускного класса за итоговый тест по информатике. Для получения положительной оценки за тест требовалось набрать не менее 20 баллов. Опишите на русском языке или на одном из языков программирования алгоритм, который позволяет найти и вывести минимальный балл среди учащихся, получивших за тест положительную оценку. Известно, что в классе хотя бы один учащийся получил за тест положительную оценку.
Бейсик | Паскаль |
N=30 DIM A(N) AS INTEGER DIM I, J, MIN AS INTEGER FOR I=1 TO N INPUT A(I) NEXT I … END | const N=30; var a: array [1..N] of integer; i, j, min: integer; … end. |
Си | Естественный язык |
#include <stdio.h> #define N 30 void main (void) { int a[N]; int i, j, min; for (i=0; i<N; i++) scanf(“% d”, &a[i]); … } | Объявляем массив А из 30 элементов. Объявляем целочисленные переменные I, J, MIN. В цикле от 1 до 30 вводим элементы массива Ас 1-го по 30-й. … |
Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования и естественного языка. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.
26 Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один или два камня или увеличить количеств камней в куче в два раза. Например, имея кучу из 15 камней, за один ход можно получить кучу из 16, 17 или 30 камней. У каждого игрока, чтобы делать ходы, есть неограниченное количество камней.
Игра завешается в тот момент, когда количество камней в куче становится не менее 31. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет 31 или более камней.
В начальный момент в куче было S камней, 1 ≤ S ≤ 30.
Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока – значит описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника.
Выполните следующие задания. Во всех случаях обосновывайте ответ.
1.а) Укажите все такие значения числа S, при которых Петя может выиграть в один ход. Обоснуйте, что найдены все нужные значения S, и укажите выигрывающий ход для каждого указанного значения S.
б) Укажите такое значение S, при котором Петя не может выиграть за один ход, но пи любом ходе Пети Ваня может выиграть своим первым ходом. Опишите выигрышную стратегию Вани.
2.Укажите два таких значения S, при которых у Пети есть выигрышная стратегия, причём (а) Петя не может выиграть за один ход и (б) Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Для каждого указанного значения S опишите выигрышную стратегию Пети.
3.Укажите значение S, при котором:
- у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети, и
- у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.
Для указанного значения S опишите выигрышную стратегию Вани. Постройте дерево всех партий, возможных при этой выигрышной стратегии Вани (в виде рисунка или таблицы). На рёбрах дерева указывайте, кто делает ход, в узлах – количество камней в куче.
27 На вход программе подаются сведения о пассажирах, сдавших свой багаж в камеру хранения. В первой строке задано текущее время: через двоеточие два целых числа, соответствующие часам (от 00 до 23 – ровно 2 символа) и минутам (от 00 до 59 – ровно 2 символа). Во второй строке сообщается количество пассажиров N, которое не меньше 10, но не превосходит 1000. Каждая из следующих N строк имеет следующий формат:
<Фамилия> <время освобождения ячейки>,
где <Фамилия> - строка, состоящая не более, чем из 20 символов, <время освобождения ячейки> - через двоеточие два целых числа, соответствующие часам (от 00 до 23 – ровно 2 символа) и минутам (от 00 до 59 – ровно 2 символа). <Фамилия> и <время освобождения ячейки> разделены одним пробелом. Сведения отсортированы в порядке времени сдачи багажа.
Требуется написать на любом языке программирования программу, выводящую фамилии пассажиров, которые в ближайшие 2 часа должны освободить ячейки, в хронологическом порядке освобождение ячеек.
Пример входных данных:
10:00
Иванов 12:00
Петров 10:00
Сидоров 12:12
Результат работы программы для этого примера
Петров
Иванов
Дата добавления: 2015-02-22; просмотров: 88 | Поможем написать вашу работу | Нарушение авторских прав |