趣味算法-回文数
一个数字从左向右读与从右向左读是一样的。
1) 计算当前数字的位数;
2) 从低位向高位,取得第i位上的数字,并乘以10的n-i次方;
3) 把数字保存在和中;
4) 判断是否和原数相等。
#include <stdio.h>
#include <math.h>
int IsHuiWen(int nNum)
{
int n = 0, i = 1;
int nTmp = nNum;
int nSum = 0;
int nSinNum = 0;
while(nTmp != 0)
{
nTmp = nTmp / 10;
n++;
}
if (n == 1)
return 0;
nTmp = nNum;
i = 1;
while(i < n)
{
nSinNum = nTmp % 10;
nSum += nSinNum * pow(10, n-i);
i++;
nTmp = nTmp / 10;
}
nSum += nTmp;
if (nSum == nNum)
{
nTmp = 1;
}
else
{
nTmp = 0;
}
return nTmp;
}
int main()
{
int test[]={11, 1531, 151, 1551, 9999};
int i = 0;
printf("Test Hui Wen \n");
for (i = 0; i < 5; i++)
{
if (IsHuiWen(test[i]) == 1)
{
printf("%d is Hui Wen\n", test[i]);
}
}
scanf("%d", &i);
return 0;
}