我如何在不知道数字位数的情况下确定数字的第一位数字?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;
}
例如,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;
}