「已注销」 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日

悬赏问题

  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败