C++第二次上机实验其他作业

来源:互联网 发布:大胃王密子君直播软件 编辑:程序博客网 时间:2024/06/04 17:44

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

#include <iostream>using namespace std;class Time{public:    void set_time( );    void show_time( );    void add_a_sec();    void add_a_minute();    void add_an_hour();    void add_seconds(int s);    void add_minutes(int m);    void add_hours(int h);private:    bool is_time(int, int, int);    int hour;    int minute;    int sec;};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::add_a_sec(){    sec+=1;    if(sec==60)    {        sec=0;        minute++;    }    if(minute==60)    {        minute=0;        hour++;    }    if(hour==24)    {        hour=0;    }}void Time::add_a_minute(){    minute+=1;    if(minute==60)    {        minute=0;        hour++;    }    if(hour==24)    {        hour=0;    }}void Time::add_an_hour(){    hour+=1;    if(hour==24)    {        hour=0;    }}void Time::add_seconds(int s){    cout<<"增加s秒:"<<endl;    cin>>s;    sec+=s;    if(sec>=60)    {        minute+=(sec/60);        sec%=60;        if(minute>=60)        {            hour+=(minute/60);        }        if(hour>=24)        {            hour%=24;        }    }}void Time::add_minutes(int m){    cout<<"增加m分:"<<endl;    cin>>m;    minute+=m;    if(minute>=60)        {            hour+=(minute/60);        }        if(hour>=24)        {            hour%=24;        }}void Time::add_hours(int h){    cout<<"增加h时:"<<endl;    cin>>h;    hour+=h;    if(hour>=24)        {            hour%=24;        }}int main( ){    Time t1;    int s,m,h;    t1.set_time();    t1.add_a_sec();    t1.show_time();    t1.set_time();    t1.add_a_minute();    t1.show_time();    t1.set_time();    t1.add_an_hour();    t1.show_time();    t1.set_time();    t1.add_seconds(s);    t1.show_time();    t1.set_time();    t1.add_minutes(m);    t1.show_time();    t1.set_time();    t1.add_hours(h);    t1.show_time();    return 0;}


运行结果:



二、项目名称:正整数类

#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 print_Daffodils(); //显示所有大于1,且小于数据成员n的水仙花数;};void NaturalNumber::setValue (int x)     //判断是否是正整数{    n=x;    if(n>0)    {        cout<<n<<"为正整数"<<endl;    }    else        cout<<n<<"不是正整数"<<endl;}int NaturalNumber::getValue()     //返回私有数据成员n的值{    return n;}bool NaturalNumber::isPrime()     //判断数据成员n是否为素数,是返回true,否则返回false{    int i;    if(n==1)        return 0;    for(i=2; i<n; i++)    {        if(n%i==0)        {            return false;        }        else            return true;    }}void NaturalNumber::printFactor()   //输出数据成员n的所有因子,包括1和n自身{    int i;    for(i=1; i<=n; i++)        if(n%i==0)            cout<<i<<" ";    cout<<endl;}bool NaturalNumber::isPerfect()    //判断数据成员n是否为完全数。{    int i,s=0;    for (i=1; i<n; i++)    {        if(n%i==0)            s+=i;    }    if(s==n)        return 1;    else        return 0;}bool NaturalNumber::isReverse(int x)    //判断形式参数x是否为数据成员n的逆向数{    int s=0;    while (x)    {        s=s*10+x%10;        x/=10;    }    if(s==n)        return 1;    else        return 0;}bool NaturalNumber::isDaffodil(int x)    //判断形式参数x是否是水仙花数。{    int i,j,k;    i=x/100;    j=x/10%10;    k=x%10;    if(i*i*i+j*j*j+k*k*k==x)        cout<<x<<"是水仙花数"<<endl;    else        cout<<x<<"不是水仙花数"<<endl;}void NaturalNumber::print_Daffodils()      //显示所有大于1,且小于数据成员n的水仙花数;{    int i,j,k,a;    cout<<n<<"所有水仙花数为 ";    for(a=100; a<n; a++)    {        i=a/100;        j=a/10%10;        k=a%10;        if(i*i*i+j*j*j+k*k*k==a)        {            cout<<a<<" ";        }    }    cout<<endl;}int main(){    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.isPerfect();    nn.setValue(121);    cout<<nn.getValue()<<(nn.isReverse(121)?"是":"不是")<<"逆向数" <<endl;    nn.isDaffodil(234);    nn.setValue(888);    nn.print_Daffodils();    return 0;}



运行结果:


三、项目名称:Book类

#include<iostream>#include<string>using namespace std;class Book{public:    void setBook(string n,string w,string pub,float pri,int num,int N);    void borrow();    void restore();    void print();    void  set_NO(int a);    int get_NO();private:    string name;    string writer;    string publicer;    float price;    int number;    int NO;};void Book::setBook(string n,string w,string pub,float pri,int num,int N){    name=n;    writer=w;    publicer=pub;    price=pri;    number=num;    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 a){    NO=a;}int Book::get_NO(){    return NO;}int main(){    Book n;    n.setBook("红楼梦","曹雪芹","北京大学出版",18.8,5,20);    cout<<"借出以后:"<<endl;    n.borrow();    n.print();    cout<<"还书以后:"<<endl;    n.restore();    n.print();    cout<<"现在书籍的信息:"<<endl;    n.set_NO(20);    n.print();    return 0;}
运行结果:




五、分数类




0 0
原创粉丝点击