文章结束给大家来个序程员笑话:[M]
/* * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作者:邱学伟 * 成完日期:2013 年 5 月 4 日 * 版本号:v1.0 * 输入描述:无 * 问题描述:分数和整型数的运算符重载“+ - * /等” * 序程出输: * 问题析分: * 法算计设:略 */ #include <iostream> #include <cmath> using namespace std; class CFraction { private: int nume;//子分 int deno;//分母 public: CFraction(int nu=0,int de=1):nume(nu),deno(de){}//构造函数定义,de=1分母不能为0! void simplify();//化简分数 void display();//展示分数 friend CFraction operator+(const CFraction &c1,const CFraction &c2);//分数之间的加减乘除,友元函数现实 friend CFraction operator-(const CFraction &c1,const CFraction &c2); friend CFraction operator*(const CFraction &c1,const CFraction &c2); friend CFraction operator/(const CFraction &c1,const CFraction &c2); friend CFraction operator+(const CFraction &c,const int i);//分数和整数的加减乘除 friend CFraction operator+(const int i,const CFraction &c); friend CFraction operator-(const CFraction &c,const int i); friend CFraction operator-(const int i,const CFraction &c); friend CFraction operator*(const CFraction &c,const int i); friend CFraction operator*(const int i,const CFraction &c); friend CFraction operator/(const CFraction &c,const int i); friend CFraction operator/(const int i,const CFraction &c); friend bool operator==(const CFraction &c1,const CFraction &c2); friend bool operator!=(const CFraction &c1,const CFraction &c2); friend bool operator<=(const CFraction &c1,const CFraction &c2); friend bool operator>=(const CFraction &c1,const CFraction &c2); friend bool operator>(const CFraction &c1,const CFraction &c2); //比拟小大 friend bool operator<(const CFraction &c1,const CFraction &c2); CFraction operator+();//取正 CFraction operator-();//取反 }; //分数的化简 void CFraction::simplify() { int d,n,r; d=fabs(deno);//分母 “fabs()” 的作用求浮点数x的绝对值。 n=fabs(nume);//子分 if(d<n) { r=d; d=n; n=r; } while(r=d%n) { d=n; n=r; } deno=deno/n; nume=nume/n; //将分母转化成正数 if(deno<0) { deno=-deno; nume=-nume; } } //展示分数 void CFraction::display() { cout<<"("<<nume<<"/"<<deno<<")"<<endl; } //分数相加 CFraction operator+(const CFraction &c1,const CFraction &c2) { CFraction c; c.nume=c1.nume*c2.deno+c2.nume*c1.deno; c.deno=c1.deno*c2.deno; c.simplify(); return c; } //分数相减 CFraction operator-(const CFraction &c1,const CFraction &c2) { CFraction c; c.nume=c1.nume*c2.deno-c2.nume*c1.deno; c.deno=c1.deno*c2.deno; c.simplify(); return c; } //分数相乘 CFraction operator*(const CFraction &c1,const CFraction &c2) { CFraction c; c.nume=c1.nume*c2.nume; c.deno=c1.deno*c2.deno; c.simplify(); return c; } //分数相除 CFraction operator/(const CFraction &c1,const CFraction &c2) { CFraction c; c.nume=c1.nume*c2.deno; c.deno=c1.deno*c2.nume; c.simplify(); return c; } //分数和整数的加法 CFraction operator+(const CFraction &c,const int i) { CFraction c0; c0.nume=c.nume+i*c.deno; c0.deno=c.deno; c0.simplify(); return c0; } CFraction operator+(const int i,const CFraction &c) { CFraction c0; c0.nume=c.nume+i*c.deno; c0.deno=c.deno; c0.simplify(); return c0; } //分数和整数的减法 CFraction operator-(const CFraction &c,const int i) { CFraction c0; c0.nume=c.nume-i*c.deno; c0.deno=c.deno; c0.simplify(); return c0; } CFraction operator-(const int i,const CFraction &c) { CFraction c0; c0.nume=i*c.deno-c.nume; c0.deno=c.deno; c0.simplify(); return c0; } //分数和整数的乘法 CFraction operator*(const CFraction &c,const int i) { CFraction c0; c0.nume=c.nume*i; c0.deno=c.deno; c0.simplify(); return c0; } CFraction operator*(const int i,const CFraction &c) { CFraction c0; c0.nume=c.nume*i; c0.deno=c.deno; c0.simplify(); return c0; } //分数和整数的除法 CFraction operator/(const CFraction &c,const int i) { CFraction c0; c0.nume=c.nume; c0.deno=c.deno*i; c0.simplify(); return c0; } CFraction operator/(const int i,const CFraction &c) { CFraction c0; c0.nume=c.deno*i; c0.deno=c.nume; c0.simplify(); return c0; } //分数取正 CFraction CFraction::operator +() { return *this; } //分数取负号 CFraction CFraction::operator -() { CFraction c; c.deno=-deno; c.nume=-nume; return c; } //比拟两个分数的小大 bool operator>(const CFraction &c1,const CFraction &c2) { double t1,t2; t1=c1.nume*c2.deno; t2=c2.nume*c1.deno; if(t1>t2) return true; else return false; } bool operator<(const CFraction &c1,const CFraction &c2) { double t1,t2; t1=c1.nume*c2.deno; t2=c2.nume*c1.deno; if(t1<t2) return true; else return false; } bool operator >=(const CFraction &c1,const CFraction &c2) { double t1,t2; t1=c1.nume*c2.deno; t2=c2.nume*c1.deno; if(t1<t2) return false; else return true; } bool operator <=(const CFraction &c1,const CFraction &c2) { double t1,t2; t1=c1.nume*c2.deno; t2=c2.nume*c1.deno; if(t1>t2) return false; else return true; } bool operator ==(const CFraction &c1,const CFraction &c2) { if(c1!=c2) return false; else return true; } bool operator!=(const CFraction &c1,const CFraction &c2) { if(c1>c2 || c1<c2 ) return true; else return false; } int main() { CFraction x(1,3),y(-5,10),s; cout<<"分数x=1/3 y=-5/10"<<endl; s=+x+y; cout<<"+x+y="; s.display(); s=x-y; cout<<"x-y="; s.display(); s=x*y; cout<<"x*y="; s.display(); s=x/y; cout<<"x/y="; s.display(); s=-x+y; cout<<"-x+y="; s.display(); x.display(); if (x>y) cout<<"大于"<<endl; if (x<y) cout<<"小于"<<endl; if (x==y) cout<<"即是"<<endl; y.display(); cout<<endl; CFraction c1(5,3),c2; //以下提议在调试环境中成完测试, c2=c1+5; c2=5+c1; c2=c1-5; c2=5-c1; c2=c1*5; c2=5*c1; c2=c1/5; c2=5/c1; bool b; b=(c1>2); b=(2>c1); return 0; }
文章结束给大家分享下程序员的一些笑话语录: 程序员打油诗
写字楼里写字间,写字间里程序员;
程序人员写程序,又拿程序换酒钱。
酒醒只在网上坐,酒醉还来网下眠;
酒醉酒醒日复日,网上网下年复年。
但愿老死电脑间,不愿鞠躬老板前;
奔驰宝马贵者趣,公交自行程序员。
别人笑我忒疯癫,我笑自己命太贱;
不见满街漂亮妹,哪个归得程序员。