c++第三次上机作业
2016-03-30 18:20
369 查看
一、阅读
四、项目名称:学生成绩
五、分数类
#include<iostream> using namespace std; class Time { public: void set_time(); void show_time(); int add_a_sec() { return(sec+=1); } int add_a_minute() { return(minute+=1); } int add_an_hour() { return(hour+=1); } int add_seconds(int n); int add_minutes(int n); int add_hours(int n); void set(); private: bool is_time(int, int, int); //这个成员函数设置为私有的,是合适的,请品味 int hour; int minute; int sec; int hours; int minutes; int secs; }; 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 Time::add_seconds(int n) { return(sec+=n); } int Time::add_minutes(int n) { return(minutes+=n); } int Time::add_hours(int n) { return(hours+=n); } void Time::set() { if(sec>60) cout<<sec%60<<endl; if(minutes>60) cout<<minute%60<<":"<<endl; if(hour>24) cout<<hour%24<<":"<<endl; int main() { Time t1; t1.set_time(); t1.show_time(); t1.add_a_minute(); t1.show_time(); t1.add_hours(5); t1.show_set(); 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 printDaffodils(); //显示所有大于1,且小于数据成员n的水仙花数; }; void NaturalNumber::setValue(int x) { if(x>0&&(int)x==x) cout<<"该成员n是正整数"<<endl; } int NaturalNumber::getValue() { return n; } bool NaturalNumber::isPrime() { int i; for(i=1;i<=n-1;i++) { if(n%i==0) break; } if(i>=n) return true; else return false; } void NaturalNumber::printFactor() { int i,j=0; for(i=1;i<=n;i++) { if(n%i==0) cout<<i<<" "; } } bool NaturalNumber::isPerfect() { int i,sum=0; for(i=1;i<=n;i++) { if(n%i==0) sum=sum+i; } if(sum==n) return true; else return false; } bool NaturalNumber::isReverse(int x); { int i,j; if(x<10) return true; else if(x<100) { i=n%10; x=i*10+(n/10); if(x==n) return true; return false; } else if(x>100&&x<1000) { i=n%10; j=(n/10)%10; x=i*100+j*10+n/10; if(x==n) return true; return false; } } bool NaturalNumber::isDaffodil(int x) { int i,j,k,sum; if(x<10) return false; else if(x<100&&x>10) { i=x%10; j=x/10; sum=i*i*i+j*j*j; if(x==sum) return true; return false; } else if(x>100&&x<1000) { i=x%10; j=(x/10)%10; k=j/10; sum=i*i*i+j*j*j+k*k*k; if(x==sum) return true; return false; } } void NaturalNumber::printDaffodils() { int x,i,j,k,sum; for(x=2;x<n;x++) { if(x<100&&x>10) { i=x%10; j=x/10; sum=i*i*i+j*j*j; if(sum==x) cout<<x<<" "; } else if(x<1000&&x>100) { i=x%10; j=(x/10)%10; k=j/10; sum=i*i*i+j*j*j+k*k*k; if(x==sum) 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; }
四、项目名称:学生成绩
#include<iostream> #include<string> using namespace std; class Stu { private: string name; //学生姓名 float chinese; //语文成绩 float math; //数学成绩 public: void setStudent(string n,float c,float m); void show(); void setName(string n); string getName(); double average(); }; 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:"<<(math+chinese)<<endl; } void Stu::setName(string n) { name=n; } string Stu::getName() { return name; } double Stu::average() { return ((math+chinese)/2); } int main() { Stu s1,s2; s1.setStudent("Lin daiyu", 98, 96); //对象置初值 s2.setStudent("Jia baoyu", 90, 88); //对象置初值 s1.show();//打印信息 s2.show();//打印信息 s1.setName("xue baochai");//重新置p1对象的名字 s1.show(); cout<<"s1.Name: "<<s1.getName()<<endl;//打印对象的名字 cout<<"s1.average: "<<s1.average()<<endl;//打印对象的成绩 return 0; }
五、分数类
#include<iostream> 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=0,int de=1) { nume=nu; deno=de; } void CFraction::set(int nu=0,int de=1) { nume=nu; deno=de; } void CFraction::input() { while(1) { char a; cout<<"请按照nu/de的格式输入"<<endl; cin>>nume>>a>>deno>>endl; if(a!='/') cout<<"输入错误,请重新输入"<<endl; else break; } } void CFraction::simplify() { int i; for(i=1;i<=nume;i++) { if(nume%i==0) { if(deno%i==0) nume=nume/i; deno=deno/i; } } cout<<nume<<'/'<<deno<<endl; } void CFraction::amplify(int n) { nume=nume*n; cout<<nume<<'/'<<deno<<endl; } void CFraction::output(int style=0) { int i,j; float a; if(style==0) cout<<"关于c1"<<endl<<"原样:"<<nume<<'/'<<deno<<endl; else if(style==1) cout<<"关于c2"<<endl<<"原样:"<<nume<<'/'<<deno<<endl; for(i=1;i<=nume;i++) { if(nume%i==0) { if(deno%i==0) nume=nume/i; deno=deno/i; } } cout<<"化简形式后:"<<nume<<'/'<<deno<<endl; else if(style==2) { cout<<"关于c3"<<endl<<"原样:"<<nume<<'/'<<deno<<endl; if(nume>deno) { j=nume/deno; nume=nume-deno*j; cout<<"带分数形式形式:"<<j<<'('<<nume<<'/'<<deno<<')'<<endl; } else cout<<"不能化为带分数形式"<<endl; } else if(style==3) { cout<<"关于c4"<<endl<<"原样:"<<nume<<'/'<<deno<<endl; a=nume/deno; cout<<"带小数形式为:"<<a<<endl; } } void main() { CFraction c1; c1.set(6,4); c1.output(0); c1.output(1); c1.output(2); c1.output(3); c1.input(); c1.simplify(); c1.output(3); cout<<"将分数放大20倍"<<endl; c1.amplify(20); }
相关文章推荐