一、阅读、运行程序后,按要求增加类的功能(此题不用写实验报告)
#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();
}