Как определить первую цифру числа, не зная количество цифр? C++

Например, 42556, Как определить первую цифру, если я не знаю количество цифр в номере? Я не мог найти алгоритм, который меня устраивал! (Я имею в виду, чтобы определить 4 в 42556)

5 ответов

Решение

Если предположить, a это номер входа.

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    long a = 42556;
    long num;
    num=floor(log10(a))+1; 
    //cout<<num<<" "<<"\n";  //prints the number of digits in the number

    cout<<a/(int)pow(10,num-1)<<"\n"; //prints the first digit
    cout<<a%10<<"\n";                 //prints the last digit

    return 0;
}

Живая демо здесь.

Вы можете продолжать делить его на 10, пока не достигнете последней цифры:

int lastDigit(int n) {
    n = abs(n); // Handle negative numbers
    int ret = n;
    while (n > 0) {
        ret = n % 10;
        n /= 10;
    }
    return ret;
}

Итеративно делим на 10, пока результат не станет меньше 10.

num = 42556
while num > 9
    num = num / 10

Все ответы предполагают, что у вас есть целое число. Но, как правило, вы можете сначала получить целочисленную форму, используя функцию floor от <cmath>т.е.

#include <cmath>
int getlastdigit(double number)
{
    long long n = (long long)floor(number);
    while(n > 9)
        n /= 10;
    return n;
}

Попробуй это:

int firstdigit(int n) {
           int x = n;
          while(n != 0) {
             x = n%10;
             n = n/10;

          }
         return x;
    }
Другие вопросы по тегам