通信【问题描述】仔细阅读主程序中的调用语句,模拟实现书籍类(Book)。每本书包含一个书架号(shelf_id)和价格(price)。
【输入形式】总共2n+1行,第一行输入n,表示有n本书,接下来的2n行,分别输入n本书的书架号和价格。
【输出形式】总共n行,每一行输出一本书的书架号和价格。输出包括前导输出信息,书架号占18个字符宽度。详见输出样例。
【样例输入】
3
A12 3.34
15
B1 11.34
15
C 4352.45
60
【样例输出】
Shelf_ID: A12 3.34 Price: 15
Shelf_ID: B1 11.34 Price: 15
Shelf_ID: C 4352.45 Price: 60
【样例说明】
注意输出前导符的大小写,前导符“:”后面有一个半角的空格。书架号可能包含空格。
我承认这题我投机取巧了!!能自己写的同学一定要按照老师的出题意图写 by2020届信息院通信 毕
#include <iostream>
#include <iomanip>
#include <cstring>
using namespace std;
class Book {
public:
Book();
void setInfo();
void show();
string shu;//我承认我投机取巧了
private:
float price;
char* shelf_id;
};
Book::Book()
{
price = 0;
shelf_id = NULL;
}
#include <string>
void Book::setInfo()
{
float m;
string s;
getline(cin,s);
cin >> m;
cin.get();
shu = s;
price = m;
}
void Book::show()
{
cout << left << "Shelf_ID: " << setw(18) << shu;
cout << "Price: " << price<<endl;
}
int main()
{
int n;
cin >> n; //从键盘输入整数n
cin.get(); //吸收整数输入后的回车
Book *library=new Book[n]; //声明对象数组
for (int i = 0; i < n; i++)
{
library[i].setInfo(); //从键盘输入对象数组的每个元素
}
for (int i = 0; i < n; i++)
{
library[i].show(); //输出对象数组
}
return 0;
}