第四周实验报告任务 3

来源:互联网 发布:gta5捏脸数据萌妹子 编辑:程序博客网 时间:2024/05/18 05:22
#include<iostream>   using namespace std;  class NaturalNumber  {private:      int n;   public:      void setValue (int x);//置数据成员n的值,要求判断是否是正整数       int getValue();  //返回私有数据成员n的值      bool isPrime();  //判断数据成员n是否为素数,是返回true,否则返回false      void printFactor();  //输出数据成员n的所有因子,包括1和n自身       bool isPerfect(); //判断数据成员n是否为完全数。若一个正整数n的所有小于n的因子之和等于n, 则称n为完全数, 如6=1+2+3是完全数。      bool isReverse(int x);//判断形式参数x是否为数据成员n的逆向数(例321是123的逆向数)。       bool isDaffodil(int x); //判断形式参数x是否是水仙花数。水仙花数的各位数字立方和等于该数,如153=1*1*1+5*5*5+3*3*3       void printDaffodils(); //显示所有大于1,且小于数据成员n的水仙花数;   };  void main(void)  {      NaturalNumber nn;   //定义类的一个实例(对象)         nn.setValue (6);      cout<<nn.getValue()<<(nn.isPrime()?"是":"不是")<<"素数" <<endl;        nn.setValue (37);      cout<<nn.getValue()<<(nn.isPrime()?"是":"不是")<<"素数" <<endl;        nn.setValue (84);       cout<<nn.getValue()<<"的因子有:";     nn.printFactor();        nn.setValue (6);       cout<<nn.getValue()<<(nn.isPerfect()?"是":"不是")<<"完全数"<<endl;        nn.setValue (321);       cout<<"123"<<(nn.isReverse(123)?"是":"不是")<<nn.getValue()<<"的逆向数" <<endl;              cout<<"153"<<(nn.isDaffodil(153)?"是":"不是")<<"水仙花数" <<endl;        nn.setValue (1000);        cout<<"所有大于1,且小于数据成员"<<nn.getValue()<<"的水仙花数:"<<endl;      nn.printDaffodils();             system("PAUSE");        }    //请在下面定义类中的各个成员函数   void NaturalNumber::setValue (int x)//置数据成员n的值,要求判断是否是正整数   {      do      {          if(x>0)            {              n=x;          }      }while(0);  }      int NaturalNumber::getValue()  //返回私有数据成员n的值   {      return n;  }    bool NaturalNumber::isPrime() //判断数据成员n是否为素数,是返回true,否则返回false   {         if(n==1)      {return true;}      else      {      for(int i=2;i<n;i++)      {          if(n%i==0)          {              return true;              break;          }          else  return false;      }      }  }      void NaturalNumber::printFactor()  //输出数据成员n的所有因子,包括1和n自身   {      for(int i=1;i<=n;i++)  {          if(n%i==0)         {             cout<<i<<".";         }         else        {             continue;          }      }      cout<<endl;  }      bool NaturalNumber::isPerfect() //判断数据成员n是否为完全数。若一个正整数n的所有小于n的因子之和等于n, 则称n为完全数, 如6=1+2+3是完全数。   {      int s=0;      for(int i=1;i<=n;i++)      {          if(n%i==0)          {s=s+i;}      }      if(s=n)      {          return true;      }     else      {         return false;      }    }    bool NaturalNumber::isReverse(int x)//判断形式参数x是否为数据成员n的逆向数(例321是123的逆向数)。   {      int a,b,c;      a=x%10;     x=x/10;      b=x%10;      c=x/10;      if(a*100+b*10+c==n)      {          return true;      }     else      {          return false;      }  }     bool NaturalNumber::isDaffodil(int x) //判断形式参数x是否是水仙花数。水仙花数的各位数字立方和等于该数,如153=1*1*1+5*5*5+3*3*3   {      int a,b,c,s;      a=x%10;      s=x/10;      b=s%10;      c=s/10;      if(x==a*a*a+b*b*b+c*c*c)     {          return true;      }      else      {          return false;      }  }    void NaturalNumber::printDaffodils() //显示所有大于1,且小于数据成员n的水仙花数;   {     for(int i=100;i<n;i++)     {          if(!isDaffodil(i))              continue;          else              cout<<i<<". ";                    }  } 

 
原创粉丝点击