C++作业2
2016-03-29 15:49
429 查看
一、、阅读、运行程序后,按要求增加类的功能
二、项目名称:正整数类
三、项目名称:Book类
四、分数类
#include <iostream> using namespace std; class Time { public: void add_a_sec(); void add_a_minute(); void add_an_hour(); void add_seconds(int); void add_minutes(int); void add_hours(int); void set_time( ); void show_time( ); private: bool is_time(int, int, int); //这个成员函数设置为私有的,是合适的,请品味 int hour,minute,sec; int t1,t2,t3; }; void Time::add_a_sec() { t1=sec; sec=sec+1; t2=minute; t3=hour; if(sec==60) { minute=minute+1; sec=00; if(minute==60) { hour=hour+1; minute=00; if(hour==24) { cout<<"<add_a_sec>无法显示"<<endl; } else cout<<"<add_a_sec>:"<<hour<<":"<<minute<<":"<<sec<<endl; } } else cout<<"<add_a_sec>:"<<hour<<":"<<minute<<":"<<sec<<endl; } void Time::add_a_minute() { sec=t1; minute=t2; hour=t3; minute=minute+1; if(minute==60) { hour=hour+1; minute=0; if(hour==24) { cout<<"<add_a_minute>无法显示"<<endl; } else cout<<"<add_a_minute>:"<<hour<<":"<<minute<<":"<<sec<<endl; } else cout<<"<add_a_minute>:"<<hour<<":"<<minute<<":"<<sec<<endl; } void Time::add_an_hour() { sec=t1; minute=t2; hour=t3; hour=hour+1; if(hour==24) { cout<<"<add_an_hour>无法显示"<<endl; } else cout<<"<add_an_hour>:"<<hour<<":"<<minute<<":"<<sec<<endl; } void Time::add_seconds(int n) { sec=t1; sec=sec+n; minute=t2; hour=t3; if(sec>59) { minute=minute+sec/60; sec=sec%60; if(minute>59) { hour=hour+minute/60; minute=minute%60; if(hour==24) { cout<<"<add_secs>无法显示"<<endl; } else cout<<"<add_secs>:"<<hour<<":"<<minute<<":"<<sec<<endl; } else cout<<"<add_secs>:"<<hour<<":"<<minute<<":"<<sec<<endl; } else cout<<"<add_secs>:"<<hour<<":"<<minute<<":"<<sec<<endl; } void Time::add_minutes(int n) { sec=t1; minute=t2; hour=t3; minute=minute+n; if(minute>=60) { hour=hour+minute/60; minute=minute%60; if(hour==24) { cout<<"<add_minutes>无法显示"<<endl; } else cout<<"<add_minutes>:"<<hour<<":"<<minute<<":"<<sec<<endl; } else cout<<"<add_minutes>:"<<hour<<":"<<minute<<":"<<sec<<endl; } void Time::add_hours(int n) { sec=t1; minute=t2; hour=t3; hour=hour+n; if(hour==24) { cout<<"<add_hours>无法显示"<<endl; } else cout<<"<add_hours>:"<<hour<<":"<<minute<<":"<<sec<<endl; } 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; } int main() { Time t1; t1.set_time(); t1.show_time(); t1.add_a_sec(); t1.add_a_minute(); t1.add_an_hour(); t1.add_seconds(40); t1.add_minutes(40); t1.add_hours(5); return 0; }
二、项目名称:正整数类
#include<iostream> #include<cmath> 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 Daffodils(); //显示所有大于1,且小于数据成员n的水仙花数; }; void NaturalNumber::setValue(int x) { n=x; if(x>0) { cout<<n<<"是正整数"<<endl; } else cout<<n<<"不是正整数"<<endl; } int NaturalNumber::getValue() { return n; } bool NaturalNumber::isPrime() { int a,b; for(a=2;a<n;a++) { b=n%a; if(b==0) break; } if(b==0) return false; else return true; } void NaturalNumber::printFactor() { int a,b; for(a=1;a<=n;a++) { b=n%a; if(b==0) cout<<a<<" "; } cout<<endl; } bool NaturalNumber::isPerfect() { int a,b,sum(0); for(a=1;a<n;a++) { b=n%a; if(b==0) sum=sum+a; } if(sum==n) return true; else return false; } bool NaturalNumber::isReverse(int x) { int a[80],i,j=0,sum=0; for(i=0;n!=0;i++) { a[i]=n%10; n=n/10; j++; } for(i=0;i<j;i++) { sum=sum+pow(10,j-1-i)*a[i]; } if(sum==x) return true; else return false; } bool NaturalNumber::isDaffodil(int x) { int a[80],i,sum=0,t; t=x; for(i=0;x!=0;i++) { a[i]=x%10; x=x/10; sum=sum+a[i]*a[i]*a[i]; } if(sum==t) return true; else return false; } void NaturalNumber::Daffodils() { int j,t; for(j=2;j<n;j++) { t=j; int a[80],i,sum=0; for(i=0;j!=0;i++) { a[i]=j%10; j=j/10; sum=sum+a[i]*a[i]*a[i]; } j=t; if(sum==t) cout<<sum<<" "; } } 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(); nn.setValue(6); cout<<nn.getValue()<<(nn.isPerfect()?"是":"不是")<<"完全数" <<endl; nn.setValue(15); cout<<nn.getValue()<<(nn.isPerfect()?"是":"不是")<<"完全数" <<endl; nn.setValue(4321); cout<<"1234"<<(nn.isReverse(1234)?"是":"不是")<<nn.getValue()<<"的逆向数" <<endl; nn.setValue(4321); cout<<"1111"<<(nn.isReverse(1111)?"是":"不是")<<nn.getValue()<<"的逆向数" <<endl; cout<<"153"<<(nn.isDaffodil(153)?"是":"不是")<<"水仙花数" <<endl; cout<<"244"<<(nn.isDaffodil(244)?"是":"不是")<<"水仙花数" <<endl; nn.setValue(2048); cout<<nn.getValue()<<"之内的水仙花数有:"; nn.Daffodils(); }
三、项目名称:Book类
#include <iostream> #include<string> using namespace std; class Book { public: void setBook(string n,string w,string p,float pri,int num,int N); void borrow(); void restore(); int print(); void set_NO(int x); int get_NO(); private: int number,NO,t; float price; string name,writer,publicer; }; void Book::setBook(string n,string w,string p,float pri,int num,int N) { name=n; writer=w; publicer=p; price=pri; number=num; NO=N; t=number; } int Book::print() { cout<<"Name:"<<name<<endl; cout<<"Writer:"<<writer<<endl; cout<<"Publicer:"<<publicer<<endl; cout<<"Price:"<<price<<endl; cout<<"Number:"<<number<<endl; cout<<"NO:"<<NO<<endl; } void Book::set_NO(int x) { NO=x; } int Book::get_NO() { return NO; } void Book::borrow() { number=t; number--; cout<<"number after borrow:"<<number<<endl; } void Book::restore() { number=t; number++; cout<<"number after restore:"<<number<<endl; } int main() { Book bo; bo.setBook("Echo","Echo","Bilibili",233.33,23,23333); bo.print(); bo.set_NO(23333); cout<<"NO:"<<bo.get_NO()<<endl; bo.borrow(); bo.restore(); return 0; }
四、分数类
相关文章推荐
- C++ explicit关键字
- C++之选择排序算法
- 用C/C++创建windows服务程序
- C/C++中const关键字详解
- C++ 类中特殊的成员变量(常变量、引用、静态)的初始化方法
- do while 循环的执行逻辑
- C/C++中volatile关键字详解
- 【C/C++】动态库与静态库
- C++ unique函数
- C++ 定义静态数据成员
- c++之冒泡排序
- c语言不同类型返回数组长度用法
- C++ 中引用与指针的区别
- c语言数组参数和返回数组函数详解
- C++下的DLL编程入门
- leetcode_191_Number of 1 Bits(easy)(C++)
- 1017_乘积最大
- C++11:for_each_file遍历目录处理文件
- C语言restrict限定符
- 浅谈C++多态性