Вопрос:
Например, 42556. Как определить первую цифру, если я не знаю числа цифр в номере? Я не мог найти алгоритм, который мне подходит! (Я хочу определить 4 в 42556)
Лучший ответ:
Предполагая, что 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; }
Живой демо здесь.
Ответ №1
Итеративно разделите на 10, пока результат не станет меньше 10.
num = 42556 while num > 9 num = num / 10 Ответ №2
Вы можете продолжать делить его на 10, пока не достигнете последней цифры:
int lastDigit(int n) { n = abs(n); // Handle negative numbers int ret = n; while (n > 0) { ret = n % 10; n /= 10; } return ret; } Ответ №3
Все ответы предполагают, что у вас есть целое число. Но в целом вы можете сначала получить целочисленную форму, используя floor функции из <cmath>, т. <cmath>
#include <cmath> int getlastdigit(double number) { long long n = (long long)floor(number); while(n > 9) n /= 10; return n; } Ответ №4
Попробуй это:
int firstdigit(int n) { int x = n; while(n != 0) { x = n%10; n = n/10; } return x; }