您的位置:首页 > 编程语言 > C语言/C++

c++上机作业

2016-04-01 18:45 429 查看
(1)时钟类:

#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 tiao();
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::tiao()
{
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;
}


(2)正整数类:

/*
文件名称:正整数类.cpp
作者    :吕松林
日期    :2016.4.1
平台    :visual c++ 6.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 printDaffodils(); //显示所有大于1,且小于数据成员n的水仙花数;
};
void NaturalNumber ::setValue(int x)
{
n=x;
while(x<=0)
{
cout<<"n不是正整数,请重新输入:"<<endl;
cin>>n;
if(n>0) break;
}
}
int NaturalNumber::getValue()
{
return n;
}
bool NaturalNumber::isPrime()
{
int i;
for(i=2;i<n;i++)
if(n%i==0)
break;
if(i==n) return true;
else     return false;
}
void NaturalNumber::printFactor()
{
int i=1;
while((n%i)==0)
{
cout<<i<<" ";
i++;
}
cout<<endl;
}
bool NaturalNumber::isPerfect()
{
int i,s=0;
for(i=1;i<n;i++)
if(n%i==0)
s+=i;
if(n==s)return true;
return false;
}

bool NaturalNumber::isReverse(int x)
{
cout<<x;
int a[10],i,k,j;
for(i=0;n!=0;i++)
{
a[i]=n%10;
n/=10;
}
k=i-1;
for(i=0;i<=k;i++)
{
for(j=0;j<k-i;j++)
{
a[i]*=10;
}
n+=a[i];
}
if(n==x)return true;
return false;
}
bool NaturalNumber::isDaffodil(int x)
{
int m=x;
cout<<"x="<<x;
int a[10],s=0,i,k;
for(i=0;x!=0;i++)
{
a[i]=x%10;
x/=10;
}
k=i;
for(i=0;i<k;i++)
s+=a[i]*a[i]*a[i];
if(m==s)return true;
return false;
}
void NaturalNumber::printDaffodils();
{
int j;
for(j=2;j<n;j++)
{
int m;
m=j;
int a[10],s=0,i,k;
for(i=0;j!=0;i++)
{
a[i]=j%10;
j/=10;
}
k=i;
for(i=0;i<k;i++)
s+=a[i]*a[i]*a[i];
if(m==s)
cout<<m<<" ";
j=m;
}
cout<<endl;
}


(3)分数类:

#include<iostream>
using namespace std;
class CFraction
{
private:
int nume;  // 分子
int deno;  // 分母
public:
CFraction(int nu=0,int de=1)
{
nume=nu;deno=de;
}
void set(int nu=0,int de=1)
{
nume=nu;deno=de;
}
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;
{
if(style==0)
cout<<"原样输出:"<<nume<<"/"<<deno<<endl;
else if(style==1)
{cout<<"输出化简后的分数: ";simplify();}
else if(style==2)
{
int a,b;
if(nume>deno)
{
a=nume-deno;
while(1)
{
if(a>deno)
a=a-deno;
else if(a<deno)
break;
}
}
b=(nume-a)/deno;
cout<<"输出真分数形式: "<<b<<"("<<a<<"/"<<deno<<")"<<endl;
}
else if(style==3)
{
double c;
c=double(nume)/double(deno);
cout<<"输出小数形式: "<<c<<endl;
}
}
};
void CFraction::input()
{
char a;
cout<<"请输入一个分数(格式a/b): "<<endl;
while(1)
{
cin>>nume>>a>>deno;
if(a!='/')
cout<<"输入格式不正确,请重新输入"<<endl;
else
break;
}
}
void CFraction::simplify()
{
int a;
for(a=2;a<=nume;a++)
{
if(nume%a==0)
{
if(deno%a==0)
{nume=nume/a;deno=deno/a;}
}
}
cout<<nume<<"/"<<deno<<endl;
}
void CFraction::amplify(int n)
{
nume=nume*n;
}
(4)学生成绩类:

#include<iostream>
#include<string>
using namespace std;
class Stu
{
public:
void setStudent(string ,float ,float );
void show();
float average();
void setName(string );
string getName();
private:
string name;    //学生姓名
float chinese;  //语文成绩
float math;     //数学成绩
};
void Stu::setStudent(string n,float c,float m)
{
name=n;
chinese=c;
math=m;
}
void Stu::show()
{
cout<<"Name: "<<name<<endl;
cout<<"Score: "<<chinese<<"  "<<math<<endl;
cout<<"average: "<<(chinese+math)/2<<"  Sum: "<<chinese+math<<endl;
cout<<endl;
}
float Stu::average()
{   float average;
average=(math+chinese)/2;
return average;
}
void Stu::setName(string n)
{
name=n;
}
string Stu::getName()
{
return name;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: