c++第2次上机作业
来源:互联网 发布:同和软件 编辑:程序博客网 时间:2024/05/01 05:35
1:第一题(时间)
#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);
void add_minutes(int);
void add_hours(int);
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;
else
return true;
}
//////////////////////////////////////
void Time::add_a_sec()
{ sec++;
if(sec>=60)
{ minute++;
sec-=60;
}
if(minute>=60){
hour++;
minute-=60;
}
if(hour>24)
hour-=24;
}
void Time::add_a_minute()
{
minute++;
if(minute>=60)
{ hour++;
minute-=60;
}
if(hour>24)
hour-=24;
}
void Time::add_an_hour()
{
hour++;
if(hour>24)
hour-=24;
}
void Time::add_seconds(int n)
{
sec+=n;
if(sec>=60)
{
sec=sec%60;
minute+=sec/60;
}
if(minute>=60)
{
minute%=60;
hour+=minute/60;
}
if(hour>24)
{
hour%=24;
}
}
int main()
{
Time t1;
t1.set_time();
t1.show_time();
t1.add_a_sec();
t1.show_time();
t1.add_a_minute();
t1.show_time();
t1.add_an_hour();
t1.show_time();
t1.add_seconds(1000);
t1.show_time();
return 0;
}
2:第二题(正整数类)
#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<<" ";
}
}
}
void 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;
}
3:第三题(Book类)
#include<iostream>
#include<string>
using namespace std;
class Book
{
public:
void setBook(char n,char w,char p,int x,int num, int N);
void borrow();
void restore();
void print();
void set_NO();
void get_NO();
private:
string name;
string writer;
string publicer;
int price;
int number;
int NO;
};
void Book::setBook(string n,string w,string p,int x,int num,int N)
{ name=n;writer=w;publicer=p;price=x;number=num;NO=N;
}
void Book::borrow()
{
number-=1;
cout<<"剩余书的数量"<<number;
}
void Book::restore()
{
number+=1;
cout<<"归还后的数量"<<number;
}
void Book::print()
{
cout<<"name:"<<name<<"writer:"<<writer<<"publicer:"<<publicer<<"price:"<<price<<"number:"<<"NO:"<<NO<<endl;
}
void Book::set_NO()
{
int a;
cout<<"原来的书号是"<<NO<<"请输入新的书号";
cin>>a;
NO=a;
cout<<"修改后书号"<<number<<endl;
}
void Book::get_NO()
{
int b;
cout<<"请输入书号:";
cin>>b;
number=b;
cout<<"该书的书号为:"<<number;
}
void main()
{ Book B1;
B1.setBook("Qin Cheng","Gu Man","Hua Huo",28,100,90);
B1.print();
B1.borrow();
B1.print();
B1.restore();
B1.print();
B1.set_NO();
B1.print();
B1.get_NO();
B1.print();
}
4:第五题(分数类)
#include<iostream>
#include <iomanip>
using namespace std;
class CFraction
{
private:
int nume; // 分子
int deno; // 分母
public:
CFraction(int nu=0,int de=1); //构造函数,初始化用
void set(int nu=0,int de=1); //置值,改变值时用
void input(); //按照"nu/de"的格式,如"5/2"的形式输入
void simplify(); //化简(使分子分母没有公因子)
void amplify(int n); //放大n倍,如2/3放大5倍为10/3
void output(int style=0); //输出:以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;
cout<<nume<<"/"<<deno;
}
/*
*创建
*/
void CFraction::set(int nu,int de)
{
nume = nu;
deno = de;
}
/*
*输出
*/
void CFraction::input()
{
cout<<nume<<"/"<<deno;
}
/*
*化简
*/
void CFraction::simplify()
{
int temp,mt=nume,r,nt=deno;
if(mt<nt)
{
temp=mt;
mt=nt;
nt=temp;
}
while(nt!=0)
{
r=mt%nt;
mt=nt;
nt=r;
}
cout<<nume/mt<<"/"<<deno/mt;
}
void CFraction::amplify(int n)
{
int nume1;
nume1 = nume*n;
cout<<nume1<<"/"<<deno;
}
/*
*选择
*/
void CFraction::output(int style)
{
int mt=nume,nt=deno,r,temp;
double a;
if(mt<nt)
{
temp=mt;
mt=nt;
nt=temp;
}
while(nt!=0)
{
r=mt%nt;
mt=nt;
nt=r;
}
if(style==1)
cout<<nume/mt<<"/"<<deno/mt;
else if(style==2)
{
if(nume-deno>0)
{
cout<<(nume/mt)/(deno/mt)<<"("<<((nume/mt)-(deno/mt))<<"/"<<(deno/mt)<<")";
}
else
cout<<"无带分数!!!";
}
else if(style==3)
{
a = (nume/mt*1.0)/(deno/mt);
cout<<setprecision(10)<<a;
}
else
cout<<nume<<"/"<<deno;
}
//主函数
void main()
{
int a,b,n,d;
cout<<"初始值为: ";
CFraction c;
cout<<endl;
cout<<"请输入分子: ";
cin>>a;
cout<<"请输入分母: ";
cin>>b;
c.set(a,b);
cout<<"创建成功:";
c.input();
cout<<endl<<"化简为: ";
c.simplify();
cout<<endl<<"输入n值:";
cin>>n;
c.amplify(n);
cout<<endl;
cout<<"请选择操作:0:原样输出 1:输出化简后形式 2:输出带分数形式 3:输出小数形式"<<endl;
c.output(d);
}
- 第2次上机作业
- 第2次上机课堂作业
- 第2次上机课后作业
- 第1次上机作业-2
- c++第2次上机作业
- C++第2次上机作业
- c++第2次上机作业
- 第5次上机作业
- 第7次上机作业
- 第4次上机作业
- c++第2次-上机实验-作业报告
- C++第1次上机作业
- 第1次上机作业-3
- 第1次上机作业-1
- C++第3次上机作业
- c++第3次上机作业
- C++第3次上机作业
- C++第4次上机作业
- 串的定长顺序存储结构
- node.js环境搭建——helloworld
- Java生成随机不重复推广码邀请码
- python在linux上的GUI无法弹出界面
- 极简代码(二)—— 转置 list of lists
- c++第2次上机作业
- 设计模式(2)用例图之一
- Atitit.eclipse comment template注释模板
- .2016-04-01
- Java8 Lambda表达式介绍
- Java8 stream流介绍
- 【操作系统】计算机的启动过程
- Android小知识点一
- Go语言版HelloWorld