Vin*_*jip 42
以下按重要性递增的顺序打印数字(即单位,然后是十位等):
do {
int digit = n % 10;
putchar('0' + digit);
n /= 10;
} while (n > 0);
Run Code Online (Sandbox Code Playgroud)
tun*_*nuz 19
怎么样floor(log(number))+1?
使用n位数并使用基数b,您可以表达任何数字pow(b,n)-1.因此,要获得基数b中数字x的位数,可以使用指数的反函数:base-b logarithm.要处理非整数结果,您可以使用该技巧.floor()+1
PS:这适用于整数,而不适用于带小数的数字(在这种情况下,您应该知道您使用的类型的精度是多少).
Mar*_*ork 13
因为每个人都在不知道问题的情况下进入.
这是我徒劳的尝试:
#include <iostream>
template<int D> int getDigit(int val) {return getDigit<D-1>(val/10);}
template<> int getDigit<1>(int val) {return val % 10;}
int main()
{
std::cout << getDigit<5>(1234567) << "\n";
}
Run Code Online (Sandbox Code Playgroud)
P S*_*ved 11
我已经看到很多答案,但他们都忘了使用do {...} while()循环,这实际上是解决这个问题并0正确处理的规范方法.
int n = 0;
std::cin>>n;
std::deque<int> digits;
n = abs(n);
do {
digits.push_front( n % 10);
n /= 10;
} while (n>0);
Run Code Online (Sandbox Code Playgroud)
你想要这样的事吗?
int n = 0;
std::cin>>n;
std::deque<int> digits;
if(n == 0)
{
digits.push_front(0);
return 0;
}
n = abs(n);
while(n > 0)
{
digits.push_front( n % 10);
n = n /10;
}
return 0;
Run Code Online (Sandbox Code Playgroud)
像这样的东西:
int* GetDigits(int num, int * array, int len) {
for (int i = 0; i < len && num != 0; i++) {
array[i] = num % 10;
num /= 10;
}
}
Run Code Online (Sandbox Code Playgroud)
mod 10将为您提供数字.div 10s将推进这个数字.
| 归档时间: |
|
| 查看次数: |
74315 次 |
| 最近记录: |