原始题目:求用十进制、二进制、八进制表示都是回文数的所有数字中,大于十进制数10的最小值
可以将题目拆分为三个子函数:是二进制回文、是八进制回文、是十进制回文
判断是几进制回文的方式相同,只是里面的参数不同,所以题目可以拆分成如下三个子题目
子题目:已知一个十进制数字,判断这个数字是否是十进制回文数字
int JudgeCircle(int t)
{
int m = 0, n = 0, q = 0;
m = t;
while (m != 0)
{
q = m % 10;
n = n * 10 + q;
m = m / 10;
}
return n == t ? 1 : 0;
}
子题目:已知一个十进制数字,判断这个数字是否是二进制回文数字
int BinaryCircle(int t)
{
int m = 0, n = 0, q = 0;
m = t;
while (m != 0)
{
q = m % 2;
n = n * 2 + q;
m = m / 2;
}
return n == t ? 1 : 0;
}
子题目:已知一个十进制数字,判断这个数字是否是八进制回文数字
int OctalCircle(int t)
{
int m = 0, n = 0, q = 0;
m = t;
while (m != 0)
{
q = m % 8;
n = n * 8 + q;
m = m / 8;
}
return n == t ? 1 : 0;
}
另:求一个十进制数字有多少位
int CountBit(int t)
{
int n = 0;
while (t != 0)
{
n++;
t = t / 10;
}
return n;
}
子题目:将一个十进制字符串转换为二进制字符串、八进制字符串
函数优化,可以编写成下面的形式,一个函数同时计算是否能是十、八、二进制的回文数
int Func(int n,int t)
{
int a = 0;
int b = n;
int c = 0;
while (b != 0)
{
a = b % t;
c = c * t + a;
b = b / t;
}
if (n == c)
return 1;
return 0;
}
网友评论