C++作业2

一、阅读、运行程序后,按要求增加类的功能

#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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值