c++作业

来源:互联网 发布:淘宝快递最便宜多少钱 编辑:程序博客网 时间:2024/04/28 07:44
一、正整数类
#include<iostream>using namespace std;class NaturalNumber{private:int n;public:void setValue (int x);//置数据成员n的值,要求判断是否是正整数int getValue();  //返回私有数据成员n的值bool isPrime();  //判断数据成员n是否为素数,是返回true,否则返回falsevoid 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*3void printDaffodils(); //显示所有大于1,且小于数据成员n的水仙花数;};int main(){NaturalNumber nn;   //定义类的一个实例(对象)       nn.setValue (-1);      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 (37);      cout<<nn.getValue()<<(nn.isPerfect()?"是":"不是")<<"完全数"<<endl;        int z;      nn.setValue(123);      z=nn.getValue();      cout<<(nn.isReverse(321)?"是":"不是")<<"n="<<z<<"的逆向数"<<endl;        nn.setValue(123);      z=nn.getValue();      cout<<(nn.isReverse(213)?"是":"不是")<<"n="<<z<<"的逆向数"<<endl;        cout<<(nn.isDaffodil(153)?"是":"不是")<<"水仙花树"<<endl;       cout<<(nn.isDaffodil(37)?"是":"不是")<<"水仙花树"<<endl;       nn.setValue(1053);     cout<<"大于1且小于数据成员"<<"n="<<nn.getValue()<<"的水仙花数:";     nn.printDaffodils();  //随着成员函数的实现,增加代码以完成相关的测试。注意判断类的成员函数需要测试是或否两种情况……}//请在下面定义类中的各个成员函数void NaturalNumber::setValue (int x){    cout << "请输入一个数据成员的值:";   cout<< x << endl;int a=0;a=(int)x;if(x==a&&x>0){cout<<"是整数";}else{    cout<<"不是整数请重新输入:"<<endl;}}int NaturalNumber::getValue(){   return n;}bool NaturalNumber::isPrime(){int i;for(i=2;i<=n;i++){if(n%i==0){    break;}if(i<n)    {    return true;    }else{    return false;}}void NaturalNumber::printFactor(){int i;for(i=1;i<=n;i++){if(n%i==0){    cout<< i<< endl;}}}bool NaturalNumber::isPerfect(){int i,s=0;for(i=1;i<n;i++){if(n%i==0){   s+=i ;}}if(n==s){cout<<"是完全数";}else{    cout<<"不是完全数";}return 0;}bool NaturalNumber::isReverse(int x){    int t,s;    while(x>0)    {        t=x%10;        s+=t;        x=x/10;        if(x!=0)        {        s*=10;        }    }    if (n == x)    {        cout << "形式参数x是数据成员n的逆向数"<< endl;            } else    {        cout << "形式参数x不是数据n的逆向数"<< endl;   }}bool NaturalNumber::isDaffodil(int x){     int t=0,s=0;    while(x>0)    {        t=x%10;        s+=t*t*t;        x=x/10;    }    if(x==s)        {        cout << "是水仙花数"<< endl;        }        return 0;}void NaturalNumber::printDaffodils(){    int i,t=0,s=0;for(i=2;i<=n;i++){while(i>0)    {        t=i%10;        s+=t*t*t;        i=i/10;    }    if(i==s)        {        cout << i<< endl;        }        }        }

二、book

#include<iostream>     #include<string>     using namespace std;  class Book  {  public:         void setBook(string n,string w,string p,int pr,int nu,int N);     void borrow();     void restore();      void print();     void set_NO(int N);     int get_NO();  private:      string name,writer,publicer;      int price,number,NO;  };    int main()  {      Book bo;      bo.setBook("二战风云","杨少丹","北京联合出版公司出版",18,5,69);     bo.borrow();     bo.print();      bo.restore();      bo.print();     bo.set_NO(6);      bo.print();     return 0;  }  void Book::setBook(string n,string w,string p,int pr,int nu,int N){      strcpy(name,n);      strcpy(writer,w);      strcpy(publicer,p);    price=pr;      number=nu;      NO=N;  }    void Book::borrow()  {      number--;  }  void Book::print()  {      cout<<"书名:"<<name<<endl;      cout<<"作者:"<<writer<<endl;      cout<<"出版社:"<<publicer<<endl;      cout<<"价格:"<<price<<endl;      cout<<"数量:"<<number<<endl;     cout<<"书号:"<<NO<<endl;  }    void Book::restore()  {      number++;  }    void Book::set_NO(int N)  {      NO=N;  }    int Book::get_NO()  {      return NO;  } 


三、学生成绩

#include<iostream>     #include<string>     using namespace std;    class Stu    {    public:      void setStudent(string n,float c,float m);      void show();      void setName(string n);      string *getName();      int average();      int Sum();    private:        string name;    //学生姓名        float chinese;  //语文成绩        float math;     //数学成绩           };     void Stu::setStudent(string n,float c,float m)  {      strcpy(name,n);      chinese=c;      math=m;  }    void Stu::show()  {      cout<<"Name:"<<name<<endl;      cout<<"Score:"<<chinese<<"      "<<math<<endl;     cout<<"average:"<<average()<<"    "<<"sum:"<<Sum()<<endl<<endl;  }      void Stu::setName(string n[20])  {     strcpy(name,n);  }     string *Stu::getName()  {    return name;  }    int Stu::average()  {     return (chinese+math)/2;  }  int Stu::Sum()  {     return(chinese+math);  }    int main()    {        Stu s1,s2;        s1.setStudent("Lin daiyu", 98, 96); //对象置初值         s2.setStudent("Jia baoyu", 90, 88); //对象置初值         s1.show();//打印信息         s2.show();//打印信息         s1.setName("xue baochai");//重新置p1对象的名字         s1.show();        cout<<"s1.Name: "<<s1.getName()<<endl;//打印对象的名字         cout<<"s1.average: "<<s1.average()<<endl;//打印对象的成绩         return 0;    }    </div><div></div><div></div>

四、分数类

 
  #include<iostream>  using namespace std;  class CFraction  {    private:       int nume;  // 分子       int deno;  // 分母     public:       CFraction(int nu,int de);   //构造函数,初始化用        void set(int nu,int de);    //置值,改变值时用         void input();               //按照"nu/de"的格式,如"5/2"的形式输入         void simplify();            //化简(使分子分母没有公因子)         void amplify(int n);        //放大n倍,如2/3放大5倍为10/3         void output(int style);   //输出:以8/6为例,style为0时,原样输出8/6;                                //style为1时,输出化简后形式4/3;                             //style为2时,输出1(1/3)形式,表示一又三分之一;                                //style为3时,用小数形式输出,如1.3333;                                //默认方式0                                };      CFraction::CFraction(int nu,int de)  {      nume=nu;deno=de;  }  void CFraction::set(int nu,int de)  {      nume=nu;      deno=de;      cout<<nume<<"/"<<deno<<endl;  }    void CFraction::input()  {      char c;      cin>>nume>>c>>deno;  }    void CFraction::simplify()  {      int i,max;      max=nume>deno?(nume/2+1):(deno/2+1);     for(i=2;i<max;i++)          if(nume%i==0&&deno%i==0)          {   nume/=i;deno/=i;  }               }    void CFraction::amplify(int n)  {      nume*=n;      simplify();  }    void CFraction::output(int style)  {     double t;      if(style==0)cout<<nume<<"/"<<deno<<endl;      else if(style==1)     {         simplify();           cout<<nume<<"/"<<deno<<endl;      }     else if(style==2)      {           simplify();         t=nume/deno;         cout<<t<<"("<<nume-deno*t<<"/"<<deno<<")"<<endl;     }      else if(style==3)     {          cout<<nume*1.0/deno<<endl;      }  }    int main()  {     CFraction c1(0,2);    cout<<"关于c1:"<<endl<<"原样:";      c1.output(0);             cout<<"改变c1:"<<endl<<"原样:";      c1.set(3,1);        cout<<"输入c1:"<<endl<<"输入分数(m/n):";      c1.input();      cout<<"原样:";      c1.output(0);       CFraction c2(4,6);    cout<<"关于c2:"<<endl<<"原样:";      c2.output(0);      cout<<"化简形式:";      c2.output(1);      cout<<"带分数形式:";      c2.output(2);      cout<<"近似值:";     c2.output(3);        cout<<"原样:";      c2.set(4,6);     cout<<"将c2化简:"<<endl<<"原样:";      c2.output(1);            cout<<"将c2放大倍:"<<endl<<"原样:";     c2.amplify(3);     c2.output(0);      cout<<"化简形式:";      c2.output(1);     return 0;  }  






0 0
原创粉丝点击