当前位置:编程学习 > VC++ >>

请用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++这个题?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,