《第四周实验报告任务3》

来源:互联网 发布:转门看lpl软件 编辑:程序博客网 时间:2024/05/17 01:00

/* (程序头部注释开始)* 程序的版权和版本声明部分* Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved.* 文件名称:     正整数类                         * 作    者:         李君凯                   * 完成日期:    2012  年 3月14号

*/ 版 本 号:          v03.121

* 对任务及求解方法的描述部分* 输入描述: * 问题描述: * 程序输出: * 程序头部的注释结束

[cpp] view plaincopyprint?#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<<". ";                    }  }  

原创粉丝点击