请用VC++为这道题编程序
定义一个类Palindrome,实现绝对回文数。设计一个算法实现对任意整型数字判断是否为绝对回文数。所谓绝对回文数,是指十进制数和二进制数均对称的数。具体要求如下:(1)私有数据成员 . int n:整型数字。 . int y: 标记是否为回文数。(2)公有成员函数 . Palindrome (int x) :构造函数,根据x 参数初始化数据成员n,y 初始化为0。 . void huiwen () :判断数n 是否为绝对回文数。 . void show( ) :若该数为回文数,则在屏幕显示。(3)在主程序中定义int a,由键盘输入数字。定义一个Palindrome 类对象p,用a 初始化p,完成对该类的测试。
答案:#include <iostream>
using namespace::std;
#define MAXLENGTH 50
class Palindrome
{
private:
int n;
int y;
public:
Palindrome(int x)
{
this->n=x;
y=0;
}
void huiwen()
{
//先检测十进制
int tn = n;
int reversen = 0;
while(tn>=10)
{
reversen = reversen*10+(tn%10);
tn/=10;
}
reversen = reversen*10+(tn%10);
if(reversen!=n)
{
y=0;
}
else
{
//再次检测二进制:
//转化成二进制:
int binarynumbers[MAXLENGTH];
tn=n; //重新赋值,为了二进制
reversen=0; //用作下标
while(tn>1)
{
binarynumbers[reversen++]=(tn%2);
tn/=2;
}
binarynumbers[reversen++]=tn;
//检测二进制是否回文
for(int i=0;i<reversen/2;++i)
{
if(binarynumbers[reversen-1-i]!=binarynumbers[i])
{
y=0;
return;
}
}
y=1;
}
}
void Show()
{
huiwen();
cout<<(y==0?"不是绝对回文数。":"是绝对回文数。");
system("pause");
}
};
void main()
{
int n;
cout<<"请输入一个数字,系统判断是否绝对回文数:";
cin>>n;
Palindrome p(n);
p.Show();
}
上一个:怎样把VC++连接的SQL server转换成Access啊?
下一个:谁能帮我做下VC++这个题?