《C++的十万个为什么》:[55]怎么翻转一个整数

《C++的十万个为什么》:[55]如何翻转一个整数?
原文来自
http://chenlq.net/dev/cpp-why/55-how-to-flip-an-integer.html
Q:

用 C/C++ 如何编写函数使整数的每一位倒序排列?
例:reverse(4376)会返回6734。
A:

这可能是C语言期末考试中的一个小题目,也可能是某个公司的笔试题目。
通常我们遇到的是翻转字符串,现在要求把一个整数翻转,考验我们灵活运用所学知识,举一反三的能力。
解决逐个问题,有两种思路:
一种是数学方法,通过将整数与10相除,求得每一位的数字,然后依次再乘10想加,得到翻转后的结果,
另一种是字符串的方法,先把数字转换成字符串,然后用字符串函数把字符串翻转,最后将字符串转换成数字,返回就可以了
以下代码实现了这两种方法:
 

#include <iostream>
#include <cstdlib>
#include <cstring>
// 数学方法
int revintmath(int n)
{
    int revn = 0;
    do
    {
        div_t r = div(n,10);
        revn = revn*10 + r.rem;
        n = r.quot;
    }
    while (n!=0);
    return revn;
}
// 字符串方法
int revintstr(int n)
{
    char str[16] = "";
    itoa(n,str,10);
    char* revstr = strrev(str);
    return atoi(revstr);
}
int main()
{
    std::cout<<revintmath(-12345600)<<std::endl;
    std::cout<<revintstr(-12345600)<<std::endl;
    return 0;
}

字符串方法不支持负数,这是一个缺陷。

------解决方案--------------------
不知楼主要问什么?