猫爱吃秋刀鱼

一、代码要求

写一个类Fish,有品种和重量两个属性,属性的类型自己选择,要求属性封装。

写一个类CatCat中有一个公有的成员函数:

Fish& eat(Fish &f);

eat函数的功能要求判断Fish的品种:

● 如果品种是“秋刀鱼”,则输出“无论多沉,我都爱吃。”。同时修改Fish &f的重量为0,并作为函数的返回值返回。

● 如果品种不是“秋刀鱼”,则判断鱼的重量,若重量大于200,吃鱼输出信息并返回一个重量为0Fish;若重量小于200,输出信息,不要修改鱼的重量,直接返回鱼的对象。

二、代码思路

主函数逻辑

  • 在 main 函数中,创建了 Fish 和 Cat 的实例。
  • 使用一个无限循环来持续接收用户输入:
    • 提示用户输入鱼的种类和重量。
    • 使用用户输入的信息设置鱼的属性。
    • 调用 cat.eat(fish) 方法,让猫尝试吃掉鱼,并获取返回的鱼对象。
    • 输出鱼的种类和剩余重量。

总体流程

  1. 用户输入鱼的种类和重量。
  2. 程序根据用户的输入设置鱼的属性。
  3. 猫尝试吃鱼,根据条件判断是否吃掉并输出结果。
  4. 循环进行,直到程序被手动停止。

三、代码及注释

#include <iostream>
using namespace std;
// 定义 Fish 类
class Fish
{
private:
    string brand;  // 鱼的品种
    float weight;  // 鱼的重量
public:
    // 设置鱼的品种
    void set_brand(string s)
    {
        brand = s;
    }
    // 设置鱼的重量
    void set_weight(float w)
    {
        weight = w;
    }    // 获取鱼的品种
    string get_brand()
    {
        return brand;
    }
    // 获取鱼的重量
    float get_weight()
    {
        return weight;
    }
};
// 定义 Cat 类
class Cat
{
public:
    // 猫吃鱼的函数,接受一个 Fish 引用作为参数
    Fish & eat(Fish &f)
    {
        // 如果鱼的品种是秋刀鱼
        if(f.get_brand() == "秋刀鱼")
        {
            cout << "无论多沉,我都爱吃!!" << endl;
            f.set_weight(0); // 将鱼的重量设为0,表示被吃掉
        }
        else
        {
            // 如果鱼的重量大于200克
            if(f.get_weight() > 200)
            {
                cout << "这鱼够大,我爱吃!" << endl;
                cout << "鱼的种类: " << f.get_brand() << " 鱼的重量: " << f.get_weight() << endl; // 输出鱼的种类和重量
                f.set_weight(0); // 将鱼的重量设为0
            }
            else
            {
                // 如果鱼的重量小于等于200克
                cout << "不是不吃只是太小了!!!" << endl;
                cout << "鱼的种类: " << f.get_brand() << " 鱼的重量: " << f.get_weight() << endl; // 输出鱼的种类和重量
            }
        }
        return f; // 返回鱼(可能是已经被吃掉的)
    }
};
int main()
{
    Fish fish; // 创建一条鱼
    Cat cat;   // 创建一只猫
    string s ; // 用于存储输入的鱼的种类
    float w;  // 用于存储输入的鱼的重量
 
  
    while(1) // 无限循环,持续输入
    {
        cout << "请输入鱼的种类和重量:" << endl; // 提示用户输入
        cin >> s; // 输入鱼的种类
        cin >> w; // 输入鱼的重量
        fish.set_brand(s); // 设置鱼的品种
        fish.set_weight(w); // 设置鱼的重量
        Fish f = cat.eat(fish); // 猫吃鱼,返回的鱼
        // 输出鱼的种类和剩余重量
        cout << "鱼的种类: " << f.get_brand() << " " << "鱼的剩余重量: " << f.get_weight() << endl;
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值