C++作业2

来源:互联网 发布:播放类软件 编辑:程序博客网 时间:2024/06/06 02:47
一、阅读、运行程序后,按要求增加类的功能#include <iostream>  using namespace std;  class Time  {  public:      void set_time( );         void show_time( );   void add_a_sec()  //增加1秒钟{         sec+=1; if(sec>=60) { add_a_minute(); sec%=60; }}     void add_a_minute() //增加1分钟{         minute+=1; if(minute>=60) { add_an_hour(); minute%=60; }}    void add_an_hour() //增加1小时{hour+=1;}    void add_seconds(int n);//增加n秒钟    void add_minutes(int n);//增加n分钟    void add_hours(int n); //增加n小时private:       bool is_time(int, int, int);   //这个成员函数设置为私有的,是合适的,请品味      int hour;      int minute;      int sec;  };  void Time::add_seconds(int n)//增加n秒{int t;    sec+=n;    if(sec>=60){t=sec/60;    add_minutes(t);    sec%=60;}}void Time::add_minutes(int n) //增加n分钟{int t;    minute+=n;    if(minute>=60){t=minute/60;add_hours(t);minute%=60;}}void Time::add_hours(int n) //增加n小时{hour+=n;}void Time::set_time( )   {      char c1,c2;      cout<<"请输入时间(格式hh:mm:ss)";      while(1)      {   cin>>hour>>c1>>minute>>c2>>sec;          if(c1!=':'||c2!=':')              cout<<"格式不正确,请重新输入"<<endl;          else if (!is_time(hour,minute,sec))              cout<<"时间非法,请重新输入"<<endl;          else               break;      }  }  void Time::show_time( )        {      cout<<hour<<":"<<minute<<":"<<sec<<endl;  }  bool Time::is_time(int h,int m, int s)  {      if (h<0 ||h>24 || m<0 ||m>60 || s<0 ||s>60)          return false;      return true;  }  int main( )  {      Time t1;     t1.set_time( ); t1.add_a_sec( );cout<<"时间增加一秒后变为:";    t1.show_time( );     t1.add_a_minute( ) ; cout<<"时间增加一分后变为:";     t1.show_time( );   t1.add_an_hour( ) ;    cout<<"时间增加一小时后变为:";    t1.show_time( );int n;    t1.set_time( );cout<<endl<<"n的值为:";cin>>n;t1.add_seconds(n); cout<<"时间增加"<<n<<"秒后变为:";    t1.show_time( );      t1.add_minutes(n); cout<<"时间增加"<<n<<"分后变为:";    t1.show_time( );      t1.add_hours(n);    cout<<"时间增加"<<n<<"小时后变为:";    t1.show_time( );      return 0;  }  三、项目名称:Book#include<iostream>   #include<string>   using namespace std;class Book{public:void setBook(char n[100],char w[100],char p[100],int pr,int nu,int N);void borrow();    void restore();void print();void set_NO(int N);int get_NO();private:char name[100],writer[100],publicer[100];int price,number,NO;};void Book::setBook(char n[100],char w[100],char p[100],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::restore()//还书{number++;}void Book::print()//输出有关书籍的信息{    cout<<"书名:"<<name<<endl;    cout<<"作者:"<<writer<<endl;cout<<"出版社:"<<publicer<<endl;cout<<"价格:"<<price<<endl;cout<<"数量:"<<number<<endl;cout<<"书号:"<<NO<<endl;}void Book::set_NO(int N){NO=N;}int Book::get_NO(){    return NO;}int main(){    Book b;b.setBook("瓦尔登湖","梭罗","北京联合公司出版",16,3,27);    b.borrow();    b.print();b.restore();    b.print();b.set_NO(5);b.print();return 0;}四、项目名称:学生成绩#include<iostream>   #include<string>   using namespace std;  class Stu  {  public:    void setStudent(char n[20],float c,float m);void show();    void setName(char n[20]);char *getName();int average();int Sum();private:      char name[20];    //学生姓名       float chinese;  //语文成绩       float math;     //数学成绩       };  void Stu::setStudent(char n[20],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(char n[20]){strcpy(name,n);} char *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;  }  五、项目名称:分数类#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,1);cout<<"关于c1:"<<endl<<"原样:";    c1.output(0); cout<<"改变c1:"<<endl<<"原样:";c1.set(2,7);    cout<<"输入c1:"<<endl<<"输入分数(m/n):";c1.input();cout<<"原样:";c1.output(0);CFraction c2(8,6);    cout<<"关于c2:"<<endl<<"原样:";    c2.output(0);cout<<"化简形式:";c2.output(1);    cout<<"带分数形式:";    c2.output(2);    cout<<"近似值:";c2.output(3);cout<<"原样:";    c2.set(8,6);    cout<<"将c2化简:"<<endl<<"原样:";    c2.output(1);cout<<"将c2放大倍:"<<endl<<"原样:";    c2.amplify(5);    c2.output(0);cout<<"化简形式:";c2.output(1);return 0;}

0 1