#include <stdio.h>
#include <string.h>
#include <math.h>
#include <assert.h>
/* 返回该数一共有多少位 */
static int getDigitNum(int iNum)
{
int iCount = 0;
assert(iNum > 0);
while (iNum > 0)
{
iNum = iNum / 10 ;
iCount++ ;
}
return iCount;
}
/* 整数翻转 */
static int reverse(int iNum)
{
int iTmp = 0;
int iLen = 0;
int iResult = 0;
/* 过滤掉整数位0的情况 */
if (0 == iNum)
{
return 0;
}
iTmp = fabs(iNum); /* 取其绝对值 */
iLen = getDigitNum(iTmp);
/* 整数翻转 */
while (iLen > 0)
{
iResult += (iTmp % 10) * pow(10, iLen - 1);
iTmp /= 10;
iLen-- ;
}
/* 判断整数的符号 */
return (iNum > 0) ? (iResult) : ((-1) * iResult);
}
int main(int argc, char **argv)
{
int iResult = 0;
iResult = reverse(-543021);
printf("%d\n\n", iResult);
return 0;
}
一个简洁的实现
static int reverse_int(int iNum)
{
int iResult = 0;
int iTmp = 0;
iTmp = fabs(iNum);
while (iTmp > 0)
{
iResult *= 10;
iResult += iTmp % 10;
iTmp /= 10;
}
return (iNum > 0) ? (iResult) : ((-1) * iResult);
}