我如何在不知道数字位数的情况下确定数字的第一位数字?c ++

How do i determine the first digit of a number without knowing the number of digits?c++

例如,42556。如果我不知道数字中的位数,如何确定第一位数字?我找不到适合我的算法! (我的意思是确定42556中的4)

迭代除以10,直到结果小于10。

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

试试这个:

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

          }
         return x;
    }

您可以继续除以 10,直到到达最后一位:

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

假设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;
}

现场演示 here.

所有答案都假定您有一个整数。但一般来说,你可以先使用 <cmath> 中的函数 floor 得到整数形式,即

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