现有3本图书,每本图书的信息包括:书号、书名、作者、价格。 (1)编写input函数,实现从键盘输入若干本图书信息,存放在结构体数组中。 (2)编写output函数,遍历结构体数组,输出所有图书信息。 (3)编写findBookByID函数,实现按书号检索图书。 (4)编写findBookByName函数,实现按书名检索图书。 目前,已编写完成main函数、input函数和findBookByName函数,请编程实现output函数和findBookByID函数。程序结构及具体要求如下。【输入形式】共4行输入。 (1)第1行~第 3行分别输入为第1本~第3本图书信息;对每本图书,在一行内分别输入书号、书名、作者、价格,各数据之间以空格分隔;书名和作者不能包含空格。 (2)第4行输入需进行检索的图书书号(ID) 【输出形式】共4行输出。 (1)第1行输出为按书号检索的结果。若没有图书,则输出字串NULL;若找到图书,则在一行内先后输出书号、书名、作者、价格(保留小数点后两位),用逗号分隔。 (2)第2行~第4行分别为所有图书信息,每行输出一本图书信息,输出格式同上。
时间: 2023-11-22 18:54:52 浏览: 133
以下是实现output函数和findBookByID函数的代码:
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
struct Book {
string id;
string name;
string author;
double price;
};
void input(Book books[], int n) {
for (int i = 0; i < n; i++) {
cin >> books[i].id >> books[i].name >> books[i].author >> books[i].price;
}
}
void output(Book books[], int n) {
for (int i = 0; i < n; i++) {
cout << books[i].id << ", " << books[i].name << ", " << books[i].author << ", " << fixed << setprecision(2) << books[i].price << endl;
}
}
Book* findBookByID(Book books[], int n, string id) {
for (int i = 0; i < n; i++) {
if (books[i].id == id) {
return &books[i];
}
}
return NULL;
}
Book* findBookByName(Book books[], int n, string name) {
for (int i = 0; i < n; i++) {
if (books[i].name == name) {
return &books[i];
}
}
return NULL;
}
int main() {
Book books[3];
input(books, 3);
string searchID;
cin >> searchID;
Book* resultByID = findBookByID(books, 3, searchID);
if (resultByID == NULL) {
cout << "NULL" << endl;
} else {
cout << resultByID->id << ", " << resultByID->name << ", " << resultByID->author << ", " << fixed << setprecision(2) << resultByID->price << endl;
}
output(books, 3);
return 0;
}
代码思路:
- 在output函数中,遍历结构体数组books,按照题目要求输出每本书的信息。
- 在findBookByID函数中,遍历结构体数组books,查找与参数id匹配的书,如果找到了则返回该书的指针,否则返回NULL。
- 在main函数中,先调用input函数输入3本书的信息,然后输入需要检索的书号searchID。接着调用findBookByID函数查找该书号对应的书籍,如果找到了则输出该书的信息,否则输出"NULL"。最后调用output函数输出所有书的信息。
相关推荐


















