Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Zada4nik-Канель-Фрайман.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
1.8 Mб
Скачать

Часть 3 (20 баллов)

Необходимо решить 1 задачу из задач 9 и 10.

9.

Дан заголовок метода: public staticint f (int n, int k, String s)

Условие входа: метод принимает два целых числа и строковую переменную.

Условие выхода: если в S по крайней мере один раз встречается пара символов «а» («aa»), метод возвращает произведение числовых параметров. Если в S встречается по крайней мере один раз знак «a», но только рядом с другими знаками, метод возвращает сумму числовых параметров. Во всех других случаях метод возвращает разницу между первым и вторым числовыми параметрами.

А. Напишите тело метода.

Б. Необходимо заполнить значениями двумерный массив размером 2535, для чего следует использовать указанный метод следующим образом: числовыми параметрами являются индексы ячейки (номер строки и номер столбца) и строковая переменная, значения которой вводятся с клавиатуры. Для каждого элемента массива следует ввести новое значение. После заполнения массива следует сосчитать число положительных и число отрицательных значений в массиве.

      1. Опишите необходимые (выбранные) переменные, их типы и назначение.

      2. Укажите подзадачи, необходимые для выполнения задания, и методы для реализации каждой подзадачи. Для каждого метода необходимо указать условие входа и условие выхода.

      3. Напишите программу для реализации задания. Программа должна напечатать содержимое массива, число положительных и число отрицательных значений в массиве.

10.

Расчет за пребывание в гостинице осуществляется в последний день. Расчет выполняется как произведение числа дней проживания на 4000 рублей за каждый день – плюс плата за отдельно заказанные каждым клиентом дополнительные услуги.

А. Напишите метод для расчета платы за проживание в гостинице, принимающую в качестве параметров: номер, в котором проживал клиент, число дней, в течение которых он занимал номер, сумму платежа за дополнительные услуги. Метод должен распечатать квитанцию, в которой указаны: номер, в котором проживал клиент, число дней его проживания в гостинице и общую сумму платежа. Если общая сумма платежа окажется более 20000 рублей – следует напечатать также дополнительное сообщение «возможна оплата в 4 платежа».

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

  1. Опишите необходимые (выбранные) переменные, их типы и назначение.

  2. Укажите подзадачи, необходимые для выполнения задания, и методы для реализации каждой подзадачи. Для каждого метода необходимо указать условие входа и условие выхода. Используйте метод, написанный в разделе А.

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

        1. Экзамен на аттестат зрелости 2002 года

Часть 1

Необходимо ответить на все вопросы 1–5. Каждый вопрос – 10 баллов.

1.

Дан алгоритм:

  1. Присвоить переменной Count значение 0

  2. Для I от 1 до 5 делать:

    1. Ввести число для переменной Number

    2. Если Number≤10, то

      1. увеличить значение Count на 1

(3) Вывести значение Count

А. Что выведет алгоритм, для следующего ввода: 8, 15, 10, -2, 1?

Необходимо использовать таблицу трассировки.

Б. Объясните, какова общая цель алгоритма.

2.

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

3.

Перед вами часть программы:

Scanner in=new Scanner(System.in);

int x=in.nextInt();

int y=in.nextInt();

if ((x>y) && (y>12)

System.out.println(“Истина”);

else

System.out.println (“Ложь”);

А. Выберите такие значения для x и y, чтобы выводилось сообщение Истина. Объясните свой выбор.

Б. Выберите такие значения для x и y, чтобы выводилось сообщение Ложь. Объясните свой выбор.

4.

Перед вами отрывок программы:

for (i=0; i< n-2; i++)

if (a[i]+2= =a[i+2])

System.out.println(i+" "+a[i]);

А. Дан массив a размером 10 ячеек:

а

3

18

5

20

2

4

5

6

1

9

Каким будет вывод программы для n=10 и данного массива. Необходимо использовать программу трассировки.

Б. Объясните, почему в программе верхняя граница цикла указана как n-2.

5.

Дан заголовок метода:

public static int how_many (int num, int dig)

Входные параметры: метод получает 2 параметра, num и dig, причем num – двузначное положительное число, а dig – цифра из диапазона 0..9.

Результат: метод возвращает число появлений dig в num.

А. Укажите две пары параметров так, чтобы для каждой пары функция возвращала иное значение.

Б. Напишите тело функции.

Часть 2

Необходимо ответить на 2 вопроса из вопросов 6–8. Каждый вопрос – 15 баллов.

6.

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

Примечание: Допустимо предположить, что все вводимые числа соответствуют требованию задачи.

7.

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

В двух десятых классах школы учатся 68 учеников. Решено в рамках мероприятия провести соревнование между этими двумя классами. Подсчет баллов было решено провести по следующей системе: за каждую пластмассовую бутылку начислять 3 балла, за батарейку – 7 баллов. Победителем признается класс, ученики которого получили в сумме большее число баллов.

Напишите программу, вводом для которой будут следующие данные: для каждого ученика вводится класс, в котором он учится, число бутылок и число батареек, которые он собрал.

Программа должна подсчитать число баллов для каждого класса и указать в качестве вывода класс-победитель; в случае, если суммы баллов равны, программа должна распечатать текстовое сообщение «НИЧЬЯ».

Примечание: Допустимо предположить, что все вводимые числа соответствуют требованию задачи.

8.

Перед вами метод, написанный на языке Java.

Входные параметры: массив vec, содержащий целые числа, и целое число m.

Результат: функция должна возвращать разницу между средним m первых ячеек массива и средним остальных его ячеек.

public static double diff(vec a, int m)

{

int i;

double sum, avg1, avg2;

sum=0;

for (i=0; i<=m-1; i++)

sum=sum+a[i];

avg1:=sum/m;

sum:=0;

fFor (i:=m-1;i<a.length; i++)

sum:=sum+a[I];

avg2:=sum/(a.length-m);

return(avg1-avg2);

}

А. Дан массив а:

а

1

3

2

4

6

0

4

Проследите за исполнением метода diff для m=3 и данного массиваа с помощью таблицы трассировки.

Б. Измените одну из команд так, чтобы функция работала правильно. Объясните сделанное изменение.

Часть 3 (20 баллов)

Необходимо ответить на 1 вопрос из вопросов 9–10.

9.

А. Дан массив размером, содержащий целые числа. Известно, что все элементы массива различны. Напишите метод, который принимает в качестве параметров данный массив и целое число m и проверяет, находится ли m в массиве. В случае, если m действительно находится в массиве, метод должен возвращать число элементов массива, меньших m и находящихся перед m (в «начальной части» массива). В случае, если m не находится в массиве, метод должен вернуть число элементов, меньших m во всем массиве.

Б. Напишите программу, заполняющую массив размером 20 ячеек различными целыми числами и затем читающую с клавиатуры еще 10 дополнительных чисел. Программа должна передавать массив и каждое из 10 дополнительных чисел в качестве параметров в метод, написанный в предыдущем разделе задачи.

Примечание: Предположите, что все вводимые числа соответствуют требованию задачи.

В. Предположим, что написанный метод возвращает 0.

Что в этом случае можно сказать о значении m? Обоснуйте свой ответ.

Что можно сказать о значении m, если метод возвратил 20 для массива в 20 ячеек?

Г. Известно, что массив отсортирован в возрастающем порядке и подпрограмма возвратила 20 (для массива в 20 ячеек). Добавьте в метод команду, которая для подобных случаев исключает необходимость просмотра всего массива.

10.

А. Напишите метод, который принимает в качестве параметра целое положительное число mis. Метод должен проверить, существуют ли два целых положительных числа, произведение которых равно mis и разница между которыми равна 3. Если такая пара чисел действительно существует, метод возвращает меньшее из них, если нет – метод возвращает 0.

Б. Напишите алгоритм, который принимает в качестве ввода 83 целых числа из диапазона 1..100. Для каждого из введенных чисел алгоритм вызывает метод, написанный в разделе А. Алгоритм должен печатать сообщение «ДА», если среди значений, возвращенных подпрограммой, были все числа от 1 до 10, в ином случае алгоритм должен печатать сообщение «НЕТ».

    1. Выберите основные переменные, опишите их типы и укажите их назначение.

    2. Разделите задачу на подзадачи и сформулируйте их цели.

В. Напишите программу для реализации алгоритма.

Примечание: Допустимо предположить, что все вводимые числа соответствуют требованию задачи.

        1. Экзамен на аттестат зрелости 2003 года

Часть 1

Необходимо ответить на все вопросы 1–5. Каждый вопрос – 10 баллов.

1.

Перед вами алгоритм:

  1. Ввести число в переменную number

  2. Пока number отличается от нуля

    1. Если number меньше 0

      1. Тогда выполнить: number*(-1)→number

    2. Вывести значение number

    3. Ввести число в переменную number

А. Проследите с помощью таблицы трассировки за исполнением алгоритма и запишите, каким будет вывод для следующего ввода:

3, -7, -2, 4, 1, 0

Б. Объясните, что выполняет алгоритм.

2.

Дан заголовок метода mean и его описание: public static double mean (int a, int b)

Параметры: метод получает два целых числа.

Результат: метод возвращает среднее арифметическое двух чисел.

А. Дополните тело метода mean.

Б. Напишите команду, выводящую на экран среднее арифметическое значений двух переменных х и у, используя метод mean.

3.

Перед вами фрагмент программы:

Scanner in=new Scanner(System.in);

a=in.nextInt();

b=in.nextInt();

if((a<b)||(a<100)

System.out.println(“TRUE”);

else

System.out.println(“FALSE”);

А. Выберите значение для ввода в переменную a и переменную b, так чтобы было выведено сообщение FALSE. Объясните свой выбор.

Б. Дано логическое выражение: (z>x)||(x<0)&&(z-y>9)

Чему равно значение этого выражения для следующих значений переменных:

x=-2; y=5; z=13?

4.

А. Дан массив a размером 27 ячеек, содержащий строки. Все элементы массива отличны друг от друга.

Напишите фрагмент программы, которая вводит строку текста и печатает ее место в массиве.

Примечание: Предполагается, что вводимая строка присутствует в массиве a.

Б. Содержимое массива изменилось, и теперь он содержит две строки, идентичные вводимой строке: одна на 3 месте, другая на 10 месте.

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

5.

Перед вами двумерный массив game размером 33 и фрагмент программы, использующей этот массив:

X

O

X

O

X

O

O

X

X

m=0;

for( i=0;i<3; i++)

if(game[i][i]==’X’)

m=m+1;

System.out.println(m);

А. Проследите с помощью таблицы трассировки за исполнением фрагмента программы.

Объясните, что выполняет фрагмент программы.

Б. Условный оператор в данном фрагменте программы изменен на следующий условный оператор:

if(game[1][i]==’X’)

m=m+1

Объясните, что теперь выполняет фрагмент программы.

Часть 2

Необходимо ответить на 2 вопроса из вопросов 6–8. Каждый вопрос – 15 баллов.

6.

В парке развлечений есть два лабиринта: big и small. Лабиринт big предназначен для посетителей, чей рост не менее 170 см, лабиринт small предназначен для посетителей ростом менее 170 см.

А. Напишите программу, которая принимает в качестве ввода целое число, определяющее рост каждого посетителя, и печатает название соответствующего лабиринта.

Ввод данных завершается, когда вводится 0. После окончания ввода программа напечатает количество посетителей в каждом из лабиринтов.

Б. Гиды в каждом из лабиринтов получают бонусы к зарплате, в зависимости от числа посетителей:

  • в лабиринте big один бонус за каждых 15 посетителей;

  • в лабиринте small один бонус за каждых 20 посетителей.

Например, если лабиринт big посетили 39 человек, гид получит 2 бонуса. Если лабиринт small посетили 80 человек, гид получит 4 бонуса.

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

7.

Перед вами описание двух алгоритмов А и Б, предназначенных для решения одной и той же задачи:

Алгоритм А

Алгоритм Б

  1. 0 s

  2. Для i от 1 до n выполнять

    1. Для j от 1 до p выполнять

      1. s+p s

  3. Вывести значение s

  1. 0 s

  2. Для k от 1 до p выполнять

    1. s+p s

  3. Вывести значение s*n

А. Проследите с помощью таблицы трассировки за исполнением обоих алгоритмов для n=2 и p=3 и запишите, каким будет вывод.

Б. Запишите, сколько раз выполняется команда s+p → s в каждом из алгоритмов.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]