当前位置: 首页 > article >正文

猫爱吃秋刀鱼

一、代码要求

写一个类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;
}


http://www.kler.cn/a/322745.html

相关文章:

  • 华为HCIP——MSTP/RSTP与STP的兼容性
  • Centos 7 安装wget
  • MongoDB在现代Web开发中的应用
  • 传奇996_23——杀怪掉落,自动捡取,捡取动画
  • 红外遥控信号解码
  • ARM(安谋) China处理器
  • 【MySQL】常见的SQL优化方式(一)
  • 财务规划技术与思维的碰撞
  • Linux网络——HTTPS详解
  • “不关心⚠️Warning”的代价:http自动升级https导致免费的存储服务扣费
  • G2O (General Graph Optimization)
  • [论文精读]Polarized Graph Neural Networks
  • Mac使用Nginx设置代理,并禁用自带Apache
  • 数模方法论-蒙特卡洛法
  • 有关若依登录过程前端的对应处理学习
  • HBase DDL操作代码汇总(namespace+table CRUD操作)
  • WebGL创建3D对象
  • springboot 引入mqtt
  • Redis 缓存雪崩、缓存穿透、缓存击穿详解
  • 基于 LangChain 的自动化测试用例的生成与执行
  • Java单体服务和集群分布式SpringCloud微服务的理解
  • 17、网络安全合规审查五大内容
  • vue按钮接收键盘回车事件
  • python:基于django的html订单提交页面
  • 小程序振动
  • 从零开始Ubuntu24.04上Docker构建自动化部署(三)Docker安装Nginx