c - 获取 long long 数字的前两位
问题描述
您好,我有一个long long
长度为 13,15 和 16 位的数字。我想得到这些数字的前两位(从左边开始)。例如:
Enter Number = 1234567890123;
First 2 digits = 12
Enter Number = 453456789012345;
First 2 digits = 45
Enter Number = 3534567890123456;
First 2 digits = 35
解决方案
反复除以 10 直到达到 0,记住该数字的倒数第二个值,您最终将返回该值作为结果。
换句话说,
#include <stdio.h>
int main(void) {
long long n = 3534567890123456;
long long n1 = n, n2 = n; // n2 will hold the first two digits.
while (n){
n2 = n1;
n1 = n;
n /= 10;
}
printf("%lld", n2);
}
我初始化n1
,因此如果 的大小小于 100 ,则n2
返回n
正确的结果。n
请注意,此算法粗心地考虑了一个不必要的步骤(您无需直接运行n
到0
),但这样做可以避免担心负面n
情况,并且n1
还会产生第一个数字,这可能很有用。