Как узнать последнюю цифру числа?
В зависимости от последней цифры числа с числом нужно делать различные действия.Для этого нужно узнать последнюю цифру.Пример: у числа 765 последняя цифра — 5.
- Вопрос задан более двух лет назад
- 13458 просмотров
1 комментарий
Простой 1 комментарий

преобразовать в строку и получить последний символ этой строки
Но нужно еще уточнить какие могут быть числа. Если вещественные, то нужно получать последнюю цифру остатка или целой части?
Решения вопроса 1
Stalker_RED @Stalker_RED
Последняя цифра — это остаток при делении на 10.
const lastDigit = 765 % 10; // -> 5
Ответ написан более двух лет назад
Нравится 6 5 комментариев
Почему выходит, что остаток при делении на 10 это последняя цифра?
Stalker_RED @Stalker_RED
rd100, потому что десятичная система же.
Давайте разделим 42 на 10. Выйдет 4 и остаток — 2.
Разделим 293857257287 на 10. Выйдет 29385725728 и остаток 7. И нет, я не делил, я просто скопировал все числа кроме семерки, но можете проверить на калькуляторе.
Stalker_RED, спасибо
А при делении 5 на 10, он возвращает 0 и остаток 5?
Stalker_RED @Stalker_RED
rd100, конечно.
Вот тут подробно
https://youtu.be/4HDiMon4M50

Богдан @bolossev666
Ответы на вопрос 2

Дмитрий Беляев @bingo347 Куратор тега JavaScript
Crazy on performance.
Для целых чисел все просто, как уже верно заметил Stalker_RED достаточно взять остаток от деления на 10 n % 10
Но вот с дробными числами все намного интереснее. Потенциально, можно получить целое представление последовательно умножая число на 10 (сдвигая тем самым десятичную точку вправо), а после воспользоваться предыдущим приемом. Но проблема тут в том, что потенциально такая последовательность может оказаться бесконечной и такой алгоритм зациклится.
Если обратится к стандарту IEEE 754, то можно узнать, что в 64 битах можно точно представить не более 16 десятичных разрядов, а это уже можно использовать как ограничитель, так как при превышении 16 сдвигов десятичной точки значение все равно уже не будет точным
const lastDigit = n => < // в n совсем не то if (isNaN(n) || !isFinite(n)) return NaN; // в n целое if (n % 1 === 0) return n % 10; // для дробных проще со строкой работать const s = String(Math.abs(n)); // неточные значения if (s.length >16 || s.includes('e')) return NaN; return +s.slice(-1); >
Подскажите как найти первую (последнюю) цифру числа (с++)
число целое, не указано это двух цифровое, трех цифровое или пяти цифровое.. . так что деление и остатки не прокатят.
Дополнен 11 лет назад
Вадим, мне потом их суммировать нужно, не прокатит
Лучший ответ
прокатит и деление и остатки: http://ideone.com/Nd7wMc
Остальные ответы
Преобразуйте в char* возьмите первый и последний байт, преобразуйте обратно в цифры.
1. Преобразовать число в строку (IntToStr)
2. Узнать количество символов в строке (length)
3. Взять первый и последний символ (str[])
4. Преобразовать обратно в число (StrToInt)
Источник: [ссылка появится после проверки модератором]
число % 10 вернёт остаток от деления на десять. конкретно — последняя цифра.
а первую цифру — в цикле ищи.
число >=10. число = (int) число/10;
в результате в числе будет только старший разряд числа
int funct(int number)
<
int digit1,digit2;
digit1=number (знак процента) 10;
if(number>=10)
number=number/10
digit2=number;
return digit1+digit2;
>
ёбанный движёк мэйла
Программа на C++ для перестановки цифр числа в обратном порядке
В этой программе будем получать от пользователя число и переставлять цифры этого числа в обратном порядке.
- Начнем программу с заголовочного файла.
#include → непрерывный поток байтов данных ввода-вывода.
using namespace std; → используется для хранения имени переменной.
int main() → возвращает функцию типа данных.
int n, reverse = 0, rem;
cout cin >> n;
- Объявим переменную в целочисленной форме ( n, reverse = 0, rem ), ведь вводить мы будем числа (в cout statement у нас задано enter a number («ввести число»)).
while (n > 0) rem = n % 10;
reverse = reverse * 10 + rem;
n /= 10;
>
Логика кода
Шаг 1. Выделение последней цифры в числе
lastDigit = number % 10
Оператор модуля (%) возвращает остаток от деления. В этом случае мы делим число на 10 и возвращаем остаток. Рассмотрим число 1234. Разряд десятков (30) делится на 10 без остатка, разряд сотен (200) и разряд тысяч (1000) — тоже. Остаток от деления будет равен 4, а это разряд единиц, который на 10 не делится. Теперь у нас есть способ выделения последней цифры любого целого числа. Сохраняем это в переменной last digit.
Шаг 2. Добавление «last digit» к «reverse»
reverse = (reverse * 10) + lastDigit
Теперь начинаем составлять число в обратном порядке, добавляя last digit в конец reverse. Не забывайте, что обе эти переменные целочисленные, поэтому их нельзя просто конкатенировать. Умножаем reverse на 10, так что разряд единиц становится разрядом десятков, разряд десятков становится разрядом сотен и т. д. И у нас остается новый разряд единиц, куда мы добавляем последнюю цифру (в нашем примере это 4).
Мы успешно скопировали последнюю цифру числа и добавили ее в reverse.
Шаг 3. Удаление последней цифры из числа
number = number / 10
Обратите внимание, что число все еще 1234, хотя цифра 4 нами уже использована. Чтобы удалить эту последнюю цифру из числа, просто делим ее на 10. Она будет удалена, потому что здесь выполняется целочисленное деление, при котором результаты округляются до ближайшего целого числа (например, 244 / 10 = 24).
Шаг 4. Повторение этого процесса
while (number > 0)
Повторяем этот процесс, пока число не уменьшится до нуля и не завершится reverse.
cout return 0;
В выводе цифры числа будут переставлены в обратном порядке, потому что в cout statement у нас задано reverse number («переставить цифры числа в обратном порядке»).
endl → очищает буфер и продолжает отображение в новой строке.
return 0 → означает, что программа выполнена успешно (цифры числа переставлены в обратном порядке).
Исходный код
#include
using namespace std;
int main() <
int n, reverse = 0, rem;
cout cin >> n;
while (n > 0) <
rem = n % 10;
reverse = reverse * 10 + rem;
n /= 10;
>
cout return 0;
>
Вывод
- 8 полезных приемов программирования на C++
- 4 совета по работе с потоками и мьютексами в C++
- Распознаём 50 видов текста на C++ с Plywood
Удаление определенных цифр из числа используя только циклы C++ [закрыт]
Пользователь вводит любое целое число. Необходимо из этого целого числа удалить все цифры 3 и 6 и вывести обратно на экран.
Мне нужно выполнить это, используя самые основы языка, то есть с помощью циклов
Отслеживать
219k 15 15 золотых знаков 119 119 серебряных знаков 230 230 бронзовых знаков
задан 18 дек 2020 в 17:08
61 1 1 серебряный знак 8 8 бронзовых знаков
Можно перевести число в строку и удалить цифры как символы после чего вывести — буквально 3 строчки кода
18 дек 2020 в 17:43
Кстати, у вас не определено, что выводить, скажем, для 36. Что за число получается, если в 36 вычеркнуть и 3, и 6 🙂
19 дек 2020 в 6:26
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
А зачем циклы? 🙂 Так сойдет?
void del36(unsigned int n) < if (n) < del36(n / 10); if (n%10 != 3 && n % 10 != 6) cout >
Ну, чистый введенный 0 обработайте отдельно.
Отслеживать
ответ дан 18 дек 2020 в 17:15
219k 15 15 золотых знаков 119 119 серебряных знаков 230 230 бронзовых знаков
Вот пример кода с комментариями:
int main() < int n; cin >> n; //Пропустим первые цифры 3 и 6 while (n > 0 && (n % 10 == 3 || n % 10 == 6)) n /= 10; //Первая цифра не 3 и не 6 int without36 = n % 10; int i = 10; while (n > 0) < //Делим на 10, чтобы перейти к следующей цифре n /= 10; if (n % 10 != 3 && n % 10 != 6) < //Вставляем цифру в начало числа without36 += (n % 10) * i; i *= 10; >> cout
Например есть число 132 , тогда после 1 цикла у нас так и останется число 132 , и в переменную without36 мы запишем цифру 2 . Войдя во второй цикл мы сразу пропустим 2 и получим 13 . И переходим на следующую итерацию т.к. последняя цифра 3. Далее остается 1 и это не 3 и не 6 значит к without36 добавим 1*i = 10 получив without36 = 12 .
Я думаю можно проще и элегантней написать алгоритм, но.
ДОПОЛНЕНО:
Вот код по красивше) от @Harry:
int n; cin >> n; int without36 = 0; int i = 1; while (n) < if (n % 10 != 3 && n % 10 != 6) < without36 += (n % 10) * i; i *= 10; >n /= 10; > cout