【问题描述】
仔细阅读主程序中的调用语句,模拟实现书籍类(Book)。每本书包含一个书架号(shelf_id)和价格(price)。
【输入形式】
总共2n+1行,第一行输入n,表示有n本书,接下来的2n行,分别输入n本书的书架号和价格。
【输出形式】
总共n行,每一行输出一本书的书架号和价格。输出包括前导输出信息,书架号占18个字符宽度。详见输出样例。
取个关加举报是我销号的动力,而且你可以在HNU2020本科信息群里面搜出一堆姓林的,HNU信息院2020的某林会和你一起努力的!!!(滑稽)
#include <iostream>
#include <iomanip>
#include <cstring>
using namespace std;
class Book
{
public:
Book();
void setInfo();
void show();
private:
float price;
char *shelf_id;
};
Book::Book()
{
price = 0;
shelf_id = NULL;
}
void Book::setInfo()
{
//new运算符开辟好空间后返回其内存地址赋值给shelf_id(即C字符串数组名),
//别把这个char* shelf_id=new char[30];拆开就不认识了ψ(*`ー´)ψ
//后面 cout<<数组名 可以整体输出
shelf_id=new char[30];
cin.getline(shelf_id,30);
cin >> price;
cin.get();
}
void Book::show()
{
//left左对齐|ू・ω・` )
cout << left << "Shelf_ID: "
<< setfill(' ') << setw(18)
<< shelf_id << "Price: " << price << endl;
}
int main()
{
int n;
cin >> n; //从键盘输入整数n
cin.get(); //吸收整数输入后的回车
Book library[n]; //声明对象数组
for (int i = 0; i < n; i++)
{
library[i].setInfo(); //从键盘输入对象数组的每个元素
}
for (int i = 0; i < n; i++)
{
library[i].show(); //输出对象数组
}
return 0;
}