Задачи на повторение основного курса Си
Задача 1. Сколько раз встречается максимум
На стандартном потоке ввода задается натуральное число N (N > 0), после которого следует последовательность из N целых чисел. На стандартный поток вывода напечатайте, сколько раз в этой последовательности встречается максимум.
Использовать массивы запрещается.
Пример №1.
Данные на входе: 6 1 2 3 2 0 3
Данные на выходе: 2
Пример №2.
Данные на входе: 3 5 2 -1
Данные на выходе:1
Задача 2. Шифр Цезаря
На стандартном потоке ввода задается целое неотрицательное число N и последовательность допустимых символов в кодировке ASCII, оканчивающаяся точкой. Допустимые символы - латинские буквы 'a' ... 'z', 'A' ... 'Z' и пробел. Требуется закодировать латинские буквы ('a' ... 'z', 'A' ... 'Z') шифром Цезаря, пробелы вывести без изменения. Число N задает сдвиг в шифре. Шифр Цезаря заключается в следующем преобразовании. Пусть буквы алфавита пронумерованы от 0 до K - 1, где K - число символов в алфавите. Тогда символ с номером n кодируется символом с номером p = (n + N) mod K (mod - операция взятия остатка). На стандартном потоке вывода напечатать зашифрованное сообщение, оканчивающееся точкой. Преобразование требуется выполнять независимо для заглавных и строчных латинских букв.
Использовать массивы запрещается.
Пример №1.
Данные на входе: 0 Hello World.
Данные на выходе: Hello World.
Пример №2.
Данные на входе: 1 Aa.
Данные на выходе: Bb.
Пример №3.
Данные на входе: 3 ppc.
Данные на выходе: ssf.
Задача 3.Циклический сдвиг
На вход программе подается беззнаковое 32-битное целое число N и натуральное число K (1 ≤ K ≤ 31). Требуется циклически сдвинуть биты числа N вправо на K битов и вывести полученное таким образом число.
Пример №1.
Данные на входе: 2 1
Данные на выходе: 1
Пример №2.
Данные на входе: 1 2
Данные на выходе: 1073741824
Пример №3.
Данные на входе: 3 1
Данные на выходе: 2147483649
Пример №4.
Данные на входе: 12 2
Данные на выходе: 3
Пример №5.
Данные на входе: 19 3
Данные на выходе: 1610612738
Задача 4. Извлечение бит
На вход программе подается беззнаковое 32-битное целое число N и натуральное число K (1 ≤ K ≤ 31). Требуется взять K младших битов числа N и вывести полученное таким образом число.
Пример №1.
Данные на входе: 2 1
Данные на выходе: 0
Пример №2.
Данные на входе: 12 3
Данные на выходе: 3
Пример №3.
Данные на входе: 3 5
Данные на выходе: 2147483649
Пример №4.
Данные на входе: 1024 3
Данные на выходе: 0
Задача 5. Поиск последовательности бит
На вход программе подается беззнаковое 32-битное целое число N и натуральное число K (1 ≤ K ≤ 31). Требуется взять K подряд идущих битов числа N так, чтобы полученное число было максимальным. Программа должна вывести полученное число.
Пример №1.
Данные на входе: 2 1
Данные на выходе: 1
Пример №2.
Данные на входе: 12 3
Данные на выходе: 6
Пример №3.
Данные на входе: 3 5
Данные на выходе: 3
Пример №4.
Данные на входе: 1024 3
Данные на выходе: 4
Задача 6. Подсчет битов
На вход программе подается беззнаковое 32-битное целое число N. Требуется найти количество единичных битов в двоичном представлении данного числа.
Пример №1.
Данные на входе: 15
Данные на выходе: 4
Пример №2.
Данные на входе: 16
Данные на выходе: 1
Пример №3.
Данные на входе: 17
Данные на выходе: 2
Задача 7. Инверсия старших
На вход программе подается беззнаковое 32-битное целое число N. Требуется изменить значения всех битов старшего байта числа на противоположные и вывести полученное таким образом число.
Пример №1.
Данные на входе: 1
Данные на выходе: 4278190081
Пример №2.
Данные на входе: 4278190081
Данные на выходе: 1
Пример №3.
Данные на входе: 2739690055
Данные на выходе: 1548507719
Задача 8. Не пара
Преподаватели Geek Brains создали набор, содержащий N (1 ≤ N ≤ 1 000 000) натуральных чисел, не превосходящих 1 000 000. Известно, что ровно одно число в этом наборе встречается один раз, а остальные — ровно по два раза. Помогите им найти это число. Входные данные: в первой входной строке вводится число N, затем по одному числу в строке вводятся N натуральных чисел, не превосходящих 2 000 000 000. Выходные данные: ваша программа должна определить число, встречающееся один раз, и вывести его на экран.
Использовать массивы запрещается.
Пример №1.
Данные на входе: 3 12 15 12
Данные на выходе: 15
Пример №2.
Данные на входе: 5 1 2 0 2 1
Данные на выходе: 0
Задача 9. Весы
В стартер боксе Geek Brains есть электронные чашечные весы (вместимость каждой чашки 1 тонна) и гири массами 1г, 3г, 9г, 27г, и т.д. по одной штуке каждой массы. Менеджер из рекламного отдела взял такие весы и не знает, можно ли взвесить что-нибудь тяжелое и если можно, сколько гирь придется положить на весы (на любую чашку). Надо помочь ему. Формат входных данных: единственное натуральное число – масса взвешиваемого товара в граммах (не больше 1000000000). Формат выходных данных: единственное целое число – общее количество гирь или число –1 если данный товар взвесить невозможно.
Пример №1.
Данные на входе: 8
Данные на выходе: 2
Задача 10. Упаковать массив
В программе реализована структура данных:
struct pack_array {
uint32_t array; // поле для хранения упакованного массива из 0 и 1
uint32_t count0 : 8; // счетчик нулей в array
uint32_t count1 : 8; // счетчик единиц в array
}
Необходимо реализовать только одну функцию (всю программу писать не надо!!!), которая упаковывает переданный ей массив из 32-ух элементов 0 и 1 в указанную структуру данных.
Функция должна строго соответствовать прототипу:
void array2struct(int [], struct pack_array *)
.
Загрузите только одну функцию или просто вставьте ее текст
void array2struct(int [], struct pack_array *)
.
Пример №1.
Данные на входе: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Данные на выходе:
Поля структуры array = ffff0000 count0 = 16 count1 = 16
Пример №2.
Данные на входе: 1 1 1 1 1 1 1 1 1 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1
Данные на выходе: Поля струткуры array = ffa70009 count0 = 17 count1 = 15
Задача 11. Распаковать порядок
Необходимо реализовать только одну функцию, которой на входе передаётся вещественное число в типе float, она возвращает порядок который хранится в поле EXP в виде десятичного целого числа.
Функция должна строго соответствовать прототипу int extractExp(float)
Вставьте только текст функции int extractExp(float)
Пример №1.
Данные на входе: 1.0
Данные на выходе: 127
Пример №2.
Данные на входе: 2.0
Данные на выходе: 128
Пример №3.
Данные на входе: 3.99999
Данные на выходе: 128
Пример №4.
Данные на входе: 0.001
Данные на выходе: 117