我试图反转打印一个数字。到目前为止我的代码是......
我提出> 10
的原因是因为如果我有一个数字89%10 =>我得到9但是对于少于10的东西,比如7%10 =>我得到0
int reverse_num(unsigned long int offset) {
int revnum = 0;
while(offset > 10){
int remainder = offset % 10;
revnum = (revnum * 10) + remainder;
offset = (offset - remainder) /10.0;
}
return revnum ;
}
但问题是如果我将实际参数作为8963传递,则返回369.即,它省略了8。但为什么 ?
答案 0 :(得分:2)
发生这种情况是因为你的循环条件错误,你应该在offset
等于0时终止,而不是当它小于10时,你跳过一位数
#include <iostream>
using std::cout;
using std::endl;
int reverse_num(unsigned long int offset) {
int revnum = 0;
while (offset){
int remainder = offset % 10;
revnum = (revnum * 10) + remainder;
offset = (offset - remainder) /10.0;
}
return revnum ;
}
int main() {
cout << reverse_num(8963) << endl;
}
另请注意,当unsigned long int
太大而无法放入int