c++第二次实验——作业

一、阅读、运行程序后,按要求增加类的功能(此题不用写实验报告)

#include <iostream>    
using namespace std;    
class Time    
{    
public:    
    void set_time( );       
    void show_time( );  
    int add_a_sec()  
    {  
        return(sec=sec+1);  
    }  
    int add_a_minute()   
    {  
        return(minute=minute+1);  
    }  
    int add_an_hour()   
    {  
        return(hour=hour+1);  
    }  
    int add_seconds(int n);  
    int add_minutes(int n);  
    int add_hours(int n);  
    void adjust();  
private:     
    bool is_time(int, int, int);   //这个成员函数设置为私有的,是合适的,请品味    
    int hour;    
    int minute;    
    int sec;    
};  
int Time::add_seconds(int n)  
{  
return(sec=sec+n);  
}  
int Time::add_minutes(int n)  
{  
    return(minute=minute+n);  
}  
int Time::add_hours(int n)  
{  
    return(hour=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;    
}  
void Time::adjust()  
{  
    if(sec>=60)  
        sec=0;  
    if(minute>=60)  
        minute=0;  
    if(hour>=60)  
        hour=0;  
}  
int main( )    
{    
    Time t1;      
    t1.set_time( );       
    t1.show_time( );  
    t1.add_a_minute();  
    t1.show_time();  
    t1.add_hours(5);  
    t1.show_time();  
    return 0;    
} 


二、正整数类

#include<iostream>    
using namespace std;    
class NaturalNumber    
{private:    
    int n;     
public:    
    void setValue (int x);  
    int getValue();  
    bool isPrime();    
    void printFactor();   
    bool isPerfect();  
    bool isDaffodil(int x);  
    void printDaffodils();  
};  
void NaturalNumber::setValue (int x)  
{  
    if(x>0&&(int)x==x)  
        cout<<x<<"是正整数"<<endl;  
    n=x;  
}  
int NaturalNumber::getValue()  
{  
return n;  
}  
bool NaturalNumber::isPrime()  
{  
    int a;  
    for(a=2;a<=n;a++)  
    {  
        if(n%a==0)  
            break;  
    }  
    if(n==a)  
        return true;  
    else  
        return false;  
}  
void NaturalNumber::printFactor()  
{  
    int a;  
    for(a=1;a<=n;a++)  
    {  
        if(n%a==0)  
            cout<<a<<" ";  
    }  
}  
bool NaturalNumber::isPerfect()  
{  
    int a,sum=0;  
    for(a=1;a<n;a++)  
    {  
        if(n%a==0)  
            sum=sum+a;  
    }  
    if(sum==n)  
    return true;  
    else  
        return false;  
}  
bool NaturalNumber::isDaffodil(int x)  
{  
    if(x==1)  
        return true;  
    else if(x<10)  
        return false;  
    else if(x<100)  
    {int a,b;  
    a=x/10;b=x-a*10;  
    if((a*a*a+b*b*b)==x)  
        return true;  
    else  
        return false;  
    }  
    else if(x<1000)  
    {  
        int a,b,c;  
        a=x/100;b=(x-a*100)/10;c=x-a*100-b*10;  
        if(x==(a*a*a+b*b*b+c*c*c))  
            return true;  
        else  
            return false;  
    }  
  
}  
void NaturalNumber::printDaffodils()  
{  
    int x;  
    for(x=2;x<n;x++)  
    {  
        if(x<100&&x>10)  
        {int a,b;  
        a=x/10;b=x-a*10;  
        if((a*a*a+b*b*b)==x)  
            cout<<x<<" ";  
        }  
        else if(x<1000&&x>100)  
        {  
            int a,b,c;  
            a=x/100;b=(x-a*100)/10;c=x-a*100-b*10;  
            if(x==(a*a*a+b*b*b+c*c*c))  
                cout<<x<<" ";  
        }  
    }  
}  
    
int 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();   
    cout<<endl;  
    nn.setValue(888);  
    cout<<nn.getValue()<<"的水仙花数有:  ";  
    nn.printDaffodils();  
    cout<<endl;  
}  


三、Book类

#include<iostream>  
#include<string>  
using namespace std;  
class Book  
{  
public:  
void setBook(string n,string p,string w,double pri,int num);  
int borrow();  
int restore();  
void printf();  
void setNo(int a);  
int getNo();  
private:  
string name,publicer,writer;  
double price;  
int No,number;  
};  
void Book::setBook(string n,string p,string w,double pri,int num)  
{  
name=n;publicer=p;writer=w;price=pri;number=num;  
}  
int Book::borrow()  
{  
return(number=number-1);  
}  
int Book::restore()  
{  
return(number=number+1);  
}  
void Book::printf()  
{  
cout<<"书名: "<<name<<endl;  
cout<<"出版社: "<<publicer<<endl;  
cout<<"作者: "<<writer<<endl;  
cout<<"价格: "<<price<<endl;  
cout<<"书号: "<<No<<endl;  
cout<<"数量: "<<number<<endl;  
}  
void Book::setNo(int a)  
{  
No=a;  
}  
int Book::getNo()  
{  
return No;  
}  
void main()  
{  
Book b1;  
b1.setBook("大学物理","科学出版社","吴百诗",24,1);  
b1.setNo(1234567890);  
b1.printf();  
}  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值