19C20C 石俊杰 第三次上机作业

本文详细解析了第三次上机作业,涵盖了类的定义与操作,包括构造函数、拷贝构造函数、析构函数的使用,以及分数类的约分、通分等操作。此外,还讨论了数组与函数的综合应用,涉及顺序查找、素数判断、排序,并解释了程序执行流程和输出结果。
摘要由CSDN通过智能技术生成

第三次上机作业

19C20C-石俊杰-20191003535

题1: 类的定义与基本操作

class Fraction {
   
//数据成员,访问控制属性默认是私有
int m_numerator = 0; // 分子默认为0; C++11
int m_denominator = 1; //分母默认为1;
public://公有成员函数
Fraction(int above = 0, int below = 1) : 
m_numerator(above), m_denominator(below) {
   
cout << "Constructor called" << endl;
}
Fraction(const Fraction& rhs) : m_numerator(rhs.m_numerator), \
m_denominator(rhs.m_denominator) {
   
cout << "Copy constructor called" << endl;
}
};
Fraction divide1(const Fraction& divident, const Fraction& divisor) {
   
return Fraction(divident.getnumerator() * divisor.getdenominator(), \
divident.getdenominator() * divisor.getnumerator());
}
Fraction divide2(Fraction divident, Fraction divisor) {
   
Fraction result(divident.getnumerator() * divisor.getdenominator(), \
divident.getdenominator() * divisor.getnumerator());
return result;
}

1.1 执行下列语句后,分别执行的什么操作,会输出什么

Fraction a;
Fraction b(a);
Fraction c = Fraction(3, 2);
Fraction d1(2, 3), d2(4, 5);
Fraction e1 = divide1(d1, d2);
Fraction e2 = divide2(d1, d2);

执行操作:
a调用构造函数
b调用拷贝构造函数
(3,2)调用构造函数
d1调用构造函数
d2调用构造函数
divide1函数调用构造函数
divide2函数divisor调用拷贝构造函数
divide2函数divident调用拷贝构造函数
divide2函数result调用构造函数
divide2函数返回值调用拷贝构造函数
析构函数

输出结果:
Constructor called
Copy constructor called
Constructor called
Constructor called
Constructor called
Constructor called
Copy constructor called
Copy constructor called
Constructor called
Copy constructor called
Destructor called
Destructor called
Destructor called
Destructor called
Destructor called
Destructor called
Destructor called
Destructor called
Destructor called
Destructor called

1.2 在上述类的定义基础上,完善下列操作

1) 显示定义析构函数

    ~Fraction() {
    cout << "Destructor called" << endl; }

2) 获取分数的分子

    int getnumerator()const {
   //获取分数的分子
	    return this ->m_numerator;
    }

3) 获取分数的分母

    int getdenominator()const {
   //获取分数的分母
    	return this->m_denominator;
    }

4) 实现分数的约分

	Fraction reduction() {
   
		int maxNum = gcd(m_numerator, m_denominator);
		m_numerator /= maxNum;
		m_denominator /= maxNum;
		return 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值