Как определить первую цифру числа, не зная количество цифр? 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;
}