c++打卡第十天

一、问题描述。

有一对兔子,第三个月开始每月生一对兔子,刚出生的兔子经过三个月又可以生一对兔子,问从1月开始到n月,每月兔子的数量。

二、设计思路。

①、第一二个月都是一对兔子,第三个月是2对,3个月是三对,第四个月就是5对。

②、由此可知,这个月兔子对数的总量等于前一个月和前两个月兔子对数的总和。

③、我们可以递归函数实现计算第n个月兔子的总和,即f(n)=f(n-1)+f(n-2);

三、流程图。

四、代码实现

#include<iostream>
using namespace std;
int f(int x)
{
    if(x==1||x==2)
    {
        return 1;
    }
    else 
    return f(x-1)+f(x-2);
}
int main()
{
    int n;
    cin>>n;
    int i=1;
    for(i=1;i<=n;i++)
    {
        cout<<i<<"  月兔子总数为:"<<f(i)<<endl;
    }
    return 0;
 } 

五、输出结果

 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

运算符重载

一、运算符重载本质是写一个函数来实现类中数据成员的加减乘除等等,那么我们这个函数写的方式就类似于我们常用的函数形式。

如:①此函数存在于类中,即成员函数Person operate+(- * / %)(Person &);

       ②此函数不存在类中,即非成员函数Person operate+(- * / %)(Person & ,Person &);

注:如果是非成员函数,例,友元函数 ,那么其函数后不可跟const,如果添加的话,就会出现以下情况

 下边我们通过一个例题来实现运算符重载的应用。

#include<iostream>
using namespace std;
class Complex {
    public:
        Complex(double r=0, double i=0):real(r), imag(i) {    }
        Complex operator+(Complex & ) const;//重载双目运算符'+'
        Complex operator-=( Complex & ); //重载双目运算符'-='
        friend Complex operator-(Complex &,Complex &)const ;//重载双目运算符'-'
        void Display() const;
    private:
        double real;
        double imag;
};
Complex Complex::operator+( Complex &p ) const {
    Complex temp;
    temp.real=this->real+p.real;
    temp.imag=this->imag+p.imag;
    return temp;
}
Complex Complex::operator-=( Complex &p ) {
    Complex temp;
    real-=p.real;
    imag-=p.imag;
    return temp;
}
Complex operator-( Complex &p,Complex &t)const {
    Complex temp;
    temp.real=p.real-t.real;
    temp.imag=p.imag-t.imag;
    return temp;
}
void Complex::Display() const {
    cout << "(" << real << ", " << imag << ")" << endl;
}

int main() {
    double r, m;
    cin >> r >> m;
    Complex c1(r, m);
    cin >> r >> m;
    Complex c2(r, m);
    Complex c3 = c1+c2;
    c3.Display();
    c3 = c1-c2;
    c3.Display();
    c3 -= c1;
    c3.Display();
    return 0;
}

输入两组值

4 2
3 -5

输出结果

(7, -3)
(1, 7)
(-3, 5)
posted @ 2023-04-20 18:09  七安。  阅读(48)  评论(0编辑  收藏  举报