编写Fraction 类,封装分数的基本功能。 (1)实现构造函数重载。 (2)实现各个成员函数。#include <iostream> using namespace std; class Fraction { public: Fraction(); //缺省构造函数设置分子为0,分母为1 Fraction(int n); //只有1 个参数,设置分子为n,分母为1 Fraction(int n, int d); //设置分子为n,分母为d void setValue(int n, int d); //设置分子和分母 int getNum(); //获取分子值 int getDen(); //获取分母值 double getDoubleValue(); //获取分数对应的小数值 void output(); //按分数形式显式分数, 按真分数或假分数形式输出 private: int num; //分子 int den; //分母 }; int main() { Fraction f1, f2(2), f3(-3,4); int num,den; cin>>num>>den; f1.setValue(num,den); cout<<"Fraction f1 is "; f1.output(); cout<<", its double value is: "<<f1.getDoubleValue()<<endl; cout<<"Fraction f2 is "; cout<<f2.getNum()<<'/'<<f2.getDen(); cout<<"\nFraction f3 is "; f3.output(); return 0; } /* 请在这里填写答案 */
时间: 2024-02-06 19:03:54 浏览: 257
设计一个表示分数的类Fraction。这个类用两个int类型的变量分别表示分子和分母。
5星 · 资源好评率100%
答案如下:
```
#include <iostream>
using namespace std;
class Fraction {
public:
Fraction() : num(0), den(1) {} // 缺省构造函数设置分子为0,分母为1
Fraction(int n) : num(n), den(1) {} // 只有1个参数,设置分子为n,分母为1
Fraction(int n, int d) : num(n), den(d) {} // 设置分子为n,分母为d
void setValue(int n, int d) { // 设置分子和分母
num = n;
den = d;
}
int getNum() { // 获取分子值
return num;
}
int getDen() { // 获取分母值
return den;
}
double getDoubleValue() { // 获取分数对应的小数值
return (double)num / den;
}
void output() { // 按分数形式显式分数, 按真分数或假分数形式输出
if (num == 0) {
cout << 0;
return;
}
if (den < 0) { // 分母为负数,转化为分子和分母都为正数
num = -num;
den = -den;
}
int gcd = getGcd(num, den); // 求最大公约数
num /= gcd;
den /= gcd;
if (num >= den) { // 假分数
int integer = num / den;
int numerator = num % den;
if (numerator == 0) {
cout << integer;
} else {
cout << integer << " " << numerator << "/" << den;
}
} else { // 真分数
cout << num << "/" << den;
}
}
private:
int num; // 分子
int den; // 分母
int getGcd(int a, int b) { // 求最大公约数
if (a < 0) a = -a;
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
};
int main() {
Fraction f1, f2(2), f3(-3, 4);
int num, den;
cin >> num >> den;
f1.setValue(num, den);
cout << "Fraction f1 is ";
f1.output();
cout << ", its double value is: " << f1.getDoubleValue() << endl;
cout << "Fraction f2 is ";
cout << f2.getNum() << '/' << f2.getDen();
cout << "\nFraction f3 is ";
f3.output();
return 0;
}
```
阅读全文