c++ primer第五版(中文)习题答案 第二章第六节-自定义数据结构

本博客知识记录自己学习中的笔记或者记录,如果有错误欢迎大家纠正。
转载声明出处

练习 2.39 编译下面的程序观察其运行结果,注意如果忘记类定义体后面的分号会发生什么情况?记录下相关信息,以后可能会有用。
struct Foo{/此处为空/} //注意这里没有分号
int main ()
{
retrun 0;
}
自行编译运行查看结果,这里不贴运行结果了

练习2.40 根据自己的理解写出Sales_data类 最好与书中的例子有所区别,

struct  Sales_data
{
    std::string bookNo;
    std::string bookName; 
    unsigned units_sold=0double revenue =0;
    double price=0.0f;
}

自己添加其他书应有的属性即可,这里只添加了 书名称和 价格

练习2.41使用自己的Sales_data 类重写1.51节,1.52节,1.6节的练习,眼前先把Sales_data 和main函数放在同一个文件。

读者查考前面章节的练习自己改写相关练习,这里不一一改写。

练习2.43 根据你自己的理解重写一个Sales_data.h头文件,并为此基础重做2.6.2的练习。

头文件Sales_data.h定义如下

#include <string>
#include <iostream>

struct Sales_data
{
  std::string bookNo;
  unsigned units_sold = 0;
  double revenue = 0.0;

  void CalcRevenue(double price); //计算收益
  double CalcAveragePrice();   //得到平均价格
  void SetData(Sales_data data);  //设置数据
  void AddData(Sales_data data); //增加数据
  void Print(); //打印输出 信息 
};

void Sales_data::CalcRevenue(double price)
{
  revenue = units_sold * price;
}

void Sales_data::SetData(Sales_data data)
{
  bookNo = data.bookNo;
  units_sold = data.units_sold;
  revenue = data.revenue;
}

void Sales_data::AddData(Sales_data data)
{
  if (bookNo != data.bookNo) return;
  units_sold += data.units_sold;
  revenue += data.revenue;
}

double Sales_data::CalcAveragePrice()
{
  if (units_sold != 0)
    return revenue/units_sold;
  else
    return 0.0;
}

void Sales_data::Print()
{
  std::cout << bookNo << " " << units_sold << " " << revenue << " ";
  double averagePrice = CalcAveragePrice();
  if (averagePrice != 0.0)
    std::cout << averagePrice << std::endl;
  else
    std::cout << "(no sales)" << std::endl;
}

在源文件调用对应的方法即可完成练习的编写

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值