我要反转int
,以便顺序从“第一个到最后一个”更改为“最后一个到第一个”(例如,123
变为321
,100
变为001
,0003
变为3000
等等..)
我有以下代码,但是基于它的工作方式,完全跳过该过程之前或之后的任何前导零或尾随零。 (0003
变为3
)
int reverseNumber(int number);
main()
{
int s = 123000000;
printf("%d\n", reverseNumber(s));
}
int reverseNumber(int number) {
int reversedNumber = 0, remainder;
while(number != 0)
{
remainder = number%10;
reversedNumber = reversedNumber*10 + remainder;
number /= 10;
}
return reversedNumber;
}
如何更改代码,使其在不省略零的情况下起作用?
最佳答案
由于前导零没有值,因此您需要告诉函数提供的值具有的位数或前导零的数目。
前导零的数目更容易:
unsigned int reverseNumber(unsigned int number, unsigned int leadingzeroes)
{
unsigned int reversedNumber = 0;
while (number) {
reversednumber = 10*reversednumber + number%10;
number /= 10;
}
while (leadingzeroes-->0) {
reversednumber = 10*reversednumber;
}
return reversedNumber;
}
关于c - 如何在C中仍然包含零的情况下反转数字?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52825076/