「已注销」 2021-05-10 17:38 采纳率: 100%
浏览 50
已结题

C++题目。大一小白真心求教。。

设计一个产品类Product如下:

class product

{

        char *name;            //产品名

        int price;          //单价

        int quantity;    //数量

public:

        product(char *n,int p,int q);

        ~product();

        void buy(int money);       //购买产品

        void get()const;                //显示剩余产品数量

};

实现类中成员函数,并在main函数中进行测试。

 

其中, void buy(int money)函数根据参数money计算可以购买产品的数量。如果数量大于quantity,则最多只能买quantity,然后计算找零。

  • 写回答

2条回答 默认 最新

  • qfl_sdu 2021-05-10 18:13
    关注

    你现在的buy函数没有返回值,没法体现能买多少产品和剩余的钱。整体代码及测试代码如下(如有帮助,请采纳一下,谢谢。):

    #include <stdio.h>
    #include <cstring>
    class product
    {

    private:
        char* name;  //产品名
        int price;   //单价
        int quantity;//数量

    public:
        product(char* n,int p ,int q);
        ~product();
        void buy(int money, int &nmb,int &lm); //购买产品
        int get();  //显示剩余产品数量,原来的返回类型void是错误的
    };

    product::product(char* n,int p ,int q)
    {
        name = 0;
        if(n)
        {
            int len = strlen(n);
            name = new char[len+1];
            memset(name,0,len+1);
            memcpy(name,n,len);
        }
        
        price = p;
        quantity = q;
    }
    product::~product()
    {
        if(name)
        {
            delete[] name;
            name = 0;
        }

    }
    //nmb是可以买的数量,lm是剩余的钱
    void product::buy(int money, int &nmb,int &lm)
    {
        nmb = money / price;
        if(nmb > quantity)
            nmb = quantity;

        quantity = quantity - nmb;  //计算本次购买后剩余的数量

        lm = money - nmb * price;
    }

    int product::get()
    {
        return quantity;
    }

    //测试代码

    void main()
    {
        product protest("abc",12,20);
        int nmb = 0;  
        int ll = 0;
        protest.buy(110,nmb,ll);
        
        printf("可买产品数量:%d,剩余钱数:%d,产品剩余数量:%d",nmb,ll,protest.get());
        getchar();
        getchar();
    }

    以上,望采纳,谢谢。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月7日

悬赏问题

  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本