Задачник по программированию
Numbers_10. Дано натуральное число, выведите его последнюю цифру.
Numbers_11. Дано неотрицательное целое число. Найдите число десятков этого числа.
Numbers_12. Дано целое трехзначное число. Необходимо найти сумму его цифр.
Numbers_13. Дано целое не отрицательное трехзначное число. Переверните число и выведите.
Numbers_14. Дано целое шестизначное число. Найдите сумму его первых трех цифр.
Home_21. Дано трехзначное число. Найти:
а) число единиц в нем;
б) число десятков в нем;
в) сумму его цифр;
г) произведение его цифр.
Решить в одной программе.
Home_22. Дано трехзначное число.
а) Найти число, полученное при прочтении его цифр справа налево.
б) В нем зачеркнули первую слева цифру и приписали ее в конце. Найти полученное число.
в) В нем зачеркнули последнюю справа цифру и приписали ее в начале. Найти полученное число.
г) Найти число, полученное при перестановке первой и второй цифр заданного числа.
д) Найти число, полученное при перестановке второй и третьей цифр заданного числа.
Home_23. Дано трехзначное число, в котором все цифры различны. Получить шесть чисел, образованных при перестановке цифр заданного числа.
Home_24. Из трехзначного числа x вычли его последнюю цифру. Когда результат разделили на 10, а к частному слева приписали последнюю цифру числа x, то получилось число 237. Найти число x.
Home_25. В трехзначном числе x зачеркнули первую цифру. Когда оставшееся число умножили на 10, а произведение сложили с первой цифрой числа x, то получилось число 564. Найти число x.
Home_26. В трехзначном числе x зачеркнули его вторую цифру. Когда к образованному при этом двузначному числу слева приписали вторую цифру числа x, то получилось число 546. Найти число x.
Home_27. В трехзначном числе x зачеркнули его последнюю цифру. Когда в оставшемся двузначном числе переставили цифры, а затем приписали к ним слева последнюю цифру числа x, то получилось число 654. Найти число x.
Цикл While. Блок 3. Анализ цифр числа.
Задача A. Сумма цифр числа Дано натуральное число N. Напишите функцию int SumOfDigits (int n), вычисляющую сумму цифр числа N.
SumOfDigits ( n) sum = 0; (n) sum += n % 10; n /= 10; sum; * This source code was highlighted with Source Code Highlighter.
Задача B. Количество нулей Дано натуральное число N. Напишите функцию int NumberOfZeroes(int n), определяющую количество нулей среди всех цифр числа N.
NumberOfZeroes( n) count = 0; (n) (n % 10 == 0) count++; n /= 10; count; * This source code was highlighted with Source Code Highlighter.
Задача C. Минимальная и максимальная цифры Дано натуральное число N. Напишите функцию int MinDigit (int n) и int MaxDigit (int n), определяющие наименьшую и наибольшую цифры данного числа. Необходимо вывести наименьшую и наибольшую цифры данного числа через пробел.
Задача D. Двоичная запись Дано натуральное число N. Выведите его представление в двоичном виде в обратном порядке.
Задача E. Обращение числа Напишите функцию int reverse(int n), которая переставляет цифры числа в обратном порядке .
Вариант 1. Если перевернутое число не требуется оформлять как отдельную переменную, то можно, просто откусывая последние цифры исходного числа, выписывать их в строку вывода .
reverse( n) cout << n % 10; n /= 10; (n); 0; * This source code was highlighted with Source Code Highlighter.
Вариант 2. Но можно и завести отдельную переменную под перевертыш, тогда появится возможность при необходимости использовать результат в дальнейшем.
Задача F. Количество палиндромов Назовем число палиндромом, если оно не меняется при перестановке его цифр в обратном порядке. Напишите функцию bool IsPalindrome (int n), проверяющую по данному числу n, является ли оно палиндромом. Напишите программу, которая по заданному числу K выводит количество натуральных палиндромов, не превосходящих K.
Цикл While. Блок 2. Обработка последовательностей, индуктивные функции.
Задача A. Длина последовательности Программа получает на вход последовательность целых неотрицательных чисел, каждое число записано в отдельной строке. Последовательность завершается числом 0, при считывании которого программа должна закончить свою работу и вывести количество членов последовательности (не считая завершающего числа 0). Числа, следующие за числом 0, считывать не нужно.
Задача B. Сумма последовательности Определите сумму всех элементов последовательности, завершающейся числом 0. Числа, следующие за нулем, считывать не нужно.
Задача C. Среднее значение последовательности Определите среднее значение всех элементов последовательности, завершающейся числом 0. Числа, следующие за нулем, считывать не нужно.
Задача D. Количество четных элементов последовательности Определите количество четных элементов в последовательности, завершающейся числом 0. Само число 0, и все, что следует за ним, учитывать не нужно.
Задача E. Максимум последовательности Последовательность состоит из натуральных чисел и завершается числом 0. Определите значение наибольшего элемента последовательности. Числа, следующие за нулем, считывать не нужно.
Задача F. Количество элементов, которые больше предыдущего Последовательность состоит из натуральных чисел и завершается числом 0. Определите, сколько элементов этой последовательности больше предыдущего элемента. Числа, следующие за числом 0, считывать не нужно.
Задача G. Второй максимум Последовательность состоит из различных натуральных чисел и завершается числом 0. Определите значение второго по величине элемента в этой последовательности. Числа, следующие за числом 0, считывать не нужно.
Задача H. Второй максимум – 2 Последовательность состоит из натуральных чисел и завершается числом 0. Определите значение второго по величине элемента в этой последовательности, то есть элемента, который будет наибольшим, если из последовательности удалить наибольший элемент. Числа, следующие за числом 0, считывать не нужно.
Задача I. Количество элементов, равных максимуму Последовательность состоит из натуральных чисел и завершается числом 0. Определите, какое количество элементов этой последовательности, равны ее наибольшему элементу. Числа, следующие за числом 0, считывать не нужно.
Задача J. Сумма последовательности – 2 Найдите сумму последовательности натуральных чисел, если признаком окончания конца последовательности является два подряд идущих числа 0. Числа, следующие после двух подряд идущих нулей считывать не нужно.
Задача K. Максимальное число идущих подряд равных элементов Дана последовательность натуральных чисел, завершающаяся числом 0. Определите, какое наибольшее число подряд идущих элементов этой последовательности равны друг другу. Числа, следующие за числом 0, считывать не нужно.
Задача L. Максимальная длина монотонного фрагмента Дана последовательность натуральных чисел, завершающаяся число 0. Определите наибольшую длину монотонного фрагмента последовательности (то есть такого фрагмента, где все элементы либо больше предыдущего, либо меньше). Числа, следующие за числом 0, считывать не нужно.
Задача M. Количество локальных максимумов Элемент последовательности называется локальным максимумом, если он строго больше предыдущего и последующего элемента последовательности. Первый и последний элемент последовательности не являются локальными максимумами. Дана последовательность натуральных чисел, завершающаяся числом 0. Определите количество строгих локальных максимумов в этой последовательности. Числа, следующие за числом 0, считывать не нужно.
Задача N. Наименьшее расстояние между локальными максимумами Определите наименьшее расстояние между двумя локальными максимумами последовательности натуральных чисел, завершающейся числом 0. Если в последовательности нет двух локальных максимумов, выведите число 0.
Задача O. Стандартное отклонение
Определите среднеквадратичное отклонение для данной последовательности натуральных чисел, завершающейся числом 0.
В программировании часто необходимо знать о числе гораздо больше, чем просто его значение. При помощи операции деления (/) и деления с остатком (%) можно анализировать число.
int num = Convert. ToInt32(Console. ReadLine()); // 1808
Console. WriteLine(“num / 10 = ” + num / 10); // 180
Console. WriteLine(“num % 10 = ” + num % 10); // 8
При помощи деления с остатком (%) на 10, 100, 1000, 10000 и так далее, можно получить столько последних цифр, сколько нулей в делителе.
— при делении с остатком числа на 10, мы получим его одну последнюю цифру, так как в делителе один ноль;
— при делении с остатком числа на 100, мы получим его две последние цифры, так как в делителе два нуля;
int year = 1945;
Console. WriteLine(“year % 10 = ” + year % 10); // 5
Console. WriteLine(“year % 100 = ” + year % 100); // 45
Console. WriteLine(“year % 1000 = ” + year % 1000); // 945
Console. WriteLine(“year % 10000 = ” + year % 10000); // 1945
При помощи деления нацело (/) 10, 100, 1000,10000, действует правило, где берется все кроме последних цифр.
— при делении числа на 10, мы получим все число кроме его последней цифры, так как в делителе один ноль;
— при делении числа на 100, мы получим число без его двух последних цифр, так как в делителе два нуля;
int money = 9876;
Console. WriteLine(“money / 10 = ” + money / 10); // 987
Console. WriteLine(“money / 100 = ” + money / 100); // 98
Console. WriteLine(“money / 1000 = ” + money / 1000); // 9
Console. WriteLine(“money / 10000 = ” + money / 10000); // 0
Console. ReadKey();
Без использования среды программирования, определите значение переменной operand после выполнения следующего фрагмента программы:
int operand = 1905;
int y = operand / 100;
operand = (operand % 100) * 10;
operand = operand + y;
operand = 1905; y = 1905 / 100 = 19;
operand = 1905 % 100 * 10 = 5 * 100 =50 + 19 = 69;
Пример использования:
Выходные данные: Введите целое число
Входные данные : 2044
Выходные данные: Последняя цифра = 4
Получить значение целого числа с консоли и операцией получения остатка от деления на 10, вывести результат в консоль.
Или в одну строку:
Console. WriteLine(“Введите целое число”);
Console. Write(“Последняя цифра = ” + int. Parse(Console. ReadLine()) % 10);
Пример использования:
Выходные данные: Введите целое число
Входные данные : 5143
Выходные данные: Число десятков = 4
Получаем значение целого числа с консоли, и последовательно разделив нацело число и получив остаток от деления предыдущего деления нацело, получим искомый результат. Или от введенного числа получаем остаток от деления на 100 и полученный результат делим нацело на 10.
Console. WriteLine(“Введите целое число”);
Console. WriteLine(“Число десятков = ” + int. Parse(Console. ReadLine()) / 10 % 10);
Пример использования:
Выходные данные: Введите целое трехзначное число
Входные данные : 213
Выходные данные: Сумма цифр числа = 6
Получаем значение целого числа с консоли, далее можем завести новые переменные для хранения каждой цифры числа или в методе вывода указать математическое выражение: введенное число нацело делим на 100 — получаем количество сотен, из предыдущей задачи мы научились находить количество десятков, а из лекции мы знаем о бинарном операторе остатке от деления, чтобы получить количество единиц.
Console. WriteLine(“Введите целое трехзначное число”);
int x = Convert. ToInt32(Console. ReadLine());
Console. Write(“Сумма цифр числа = “+ x / 100 + x / 10 % 10 + x % 10);
Пример использования:
Выходные данные: Введите целое трехзначное число
Входные данные : 123
Выходные данные: Перевернутое число 123 = 321
Решаем как предыдущую задачу, только при выводе результата в консоль, сначала выводи количество единиц, потом десятков и сотен.
Или короче без использования дополнительный переменных:
Console. WriteLine(“Введите целое трехзначное число”);
int number = Convert. ToInt32(Console. ReadLine());
Console. Write(“Перевернутое число ” + number+” = ” +
number % 10 + “” + number / 10 % 10 + “” + number / 100);
Пример использования:
Выходные данные 1: Введите целое шестизначное число
Входные данные 1: 654023
Выходные данные 1: Сумма последних трех цифр числа = 15
Принимаем с консоли число, решаем сразу в строке вывода на консоль, находить цифры числа мы уже научились в предыдущих задачах.
В методе вывода, вычислительное выражение для суммы, берем в скобки, иначе выведутся найденные цифры в виде числовых символов.
Или используем дополнительные переменные для хранения значений каждой из трех последних цифр числа если нам они потребуются далее в программе.