题目1
【问题描述】
根据main测试函数设计有理数类CRational,数据成员由分子、分母组成(都是整型,应表示成最简形式),完成分数显示(如用户输入的分子是4,分母是8,输出:1/2)、两个分数相加、相乘等功能。main函数不得修改。提示:用分子分母的最大公约数分别除分子和分母即得最简分数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 int main () { int a,b,c,d; cin>>a>>b>>c>>d; CRational f1 (a,b) ; CRational f2 (c,d) ; CRational f3=f1.add (f2); f3.show (); f3=f1.multi (f2); f3.show (); return 0 ; }
若输入:
-1 5 6 -20
将输出:
-1/2
3/50
【代码】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 #include <iostream> #include <algorithm> using namespace std;class CRational { public : int fz; int fm; CRational (){ this ->fz=0 ; this ->fm=1 ; } CRational (int a, int b){ int c=__gcd(a,b); fz=a/c; fm=b/c; } CRational add (CRational c) { int x=c.fm * this ->fm ; int y=c.fz * this ->fm + c.fm * this ->fz ; CRational result (y,x) ; return result; } CRational multi (CRational c) { int x=c.fm * this ->fm ; int y=c.fz * this ->fz ; CRational result (y,x) ; return result; } void show () { if (fm<0 ){ fz=-fz; fm=-fm; } cout<<fz<<'/' <<fm<<endl; } }; int main () { int a,b,c,d; cin>>a>>b>>c>>d; CRational f1 (a,b) ; CRational f2 (c,d) ; CRational f3=f1.add (f2); f3.show (); f3=f1.multi (f2); f3.show (); return 0 ; }
题目2
【问题描述】
我们把形如z=a+bi(a,b均为实数)的数称为复数,其中a称为实部,定义一个复数类Complex,用show()函数显示形如 5-3i 6+2i的复数,增成员函数add(const Complex &t),实现对象本身加上复数t的操作,在主程序中进行测试。
【输入形式】
输入四个数,分别代表c1的实部,c1的虚部,c2的实部,c2的虚部
【输出形式】
输出c1,c2,相加的结果
【样例输入】
3 3 4 -3
【样例输出】
c1:3+3i
c2:4-3i
c3:7
【代码】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 #include <iostream> using namespace std;class Complex {private : double shi, xu; public : Complex (double a, double b); void add (Complex J) ; void show () ; }; Complex::Complex (double a, double b) { shi = a; xu = b; } void Complex::add (Complex J) { shi = shi + J.shi; xu = xu + J.xu; } void Complex::show () { if (shi == 0 && xu == 0 ) { cout << 0 << endl; } else if (shi == 0 ) { cout << xu << "i" << endl; } else if (xu == 0 ) { cout << shi << endl; } else { if (xu > 0 ) { cout << shi << "+" << xu << "i" << endl; } else if (xu < 0 ) { cout << shi << xu << "i" << endl; } } } int main () { double x, y, z, h; while (cin >> x >> y >> z >> h) { Complex c1 (x, y) ; Complex c2 (z, h) ; cout<<"c1:" ; c1.show (); cout<<"c2:" ; c2.show (); c1.add (c2); cout<<"c3:" ; c1.show (); } }
代码可能略有不足,请大佬多多指教