个人答案:
#includeusing namespace std; class fenshu { public: fenshu(int n = 0, int d = 0): num(n), den(d) {}//分子n,分母d fenshu operator+(fenshu& c2); fenshu operator-(fenshu& c2); fenshu operator*(fenshu& c2); fenshu operator/(fenshu& c2); int gys(int a, int b); void display()const { if (den == 1) cout << num << endl; else cout << num << "/" << den << endl; } private: int num, den; //分子分母 }; int fenshu::gys(int a, int b) { int c; while (b != 0) { c = a % b; a = b; b = c; } return a > 0 ? a : -a; } fenshu fenshu::operator+(fenshu& c2) //加法的重载 { int d3, num3, g; d3 = den * c2.den; num3 = num * c2.den + c2.num * den; g = gys(d3, num3); d3 = d3 / g; num3 = num3 / g; return fenshu(num3, d3); } fenshu fenshu::operator-(fenshu& c2) //减法的重载 { int d3, num3, g; d3 = den * c2.den; num3 = num * c2.den - c2.num * den; g = gys(d3, num3); d3 = d3 / g; num3 = num3 / g; return fenshu(num3, d3); } fenshu fenshu::operator*(fenshu& c2) //乘法的重载 { int d3, num3, g; d3 = den * c2.den; num3 = num * c2.num; g = gys(d3, num3); d3 = d3 / g; num3 = num3 / g; return fenshu(num3, d3); } fenshu fenshu::operator/(fenshu& c2) //除法的重载 { int d3, num3, g; d3 = den * c2.num; num3 = num * c2.den; g = gys(d3, num3); d3 = d3 / g; num3 = num3 / g; return fenshu(num3, d3); } int main() { int d1, n1, d2, n2; char c; cout << "Input x: "; cin >> d1 >> c >> n1; cout << "Input y: "; cin >> d2 >> c >> n2; fenshu c1(d1, n1), c2(d2, n2), c3; c3 = c1 + c2; cout << "x+y="; c3.display(); c3 = c1 - c2; cout << "x-y="; c3.display(); c3 = c1 * c2; cout << "x*y="; c3.display(); c3 = c1 / c2; cout << "x/y="; c3.display(); system("pause"); return 0; }
结果:



