#include<iostream> #include<string.h> #include<iomanip> #define OK 1 #define ERROR 0 #define OVERFLOW -2 #define MAXSIZE 1000 //图书表可能达到的最大长度 using namespace std; typedef struct {//图书信息定义 char no[20]; //图书ISBN char name[50]; //图书名字 float price; //图书价格 }Book; typedef struct {//图书表的顺序存储结构类型为SqList Book *elem; //存储空间的基地址 int length; //图书表中当前图书个数 }SqList; int InitList_Sq(SqList &L) {//构造一个空的顺序表L L.elem=new Book[MAXSIZE]; //为顺序表分配一个大小为MAXSIZE的数组空间 if(!L.elem)exit(OVERFLOW); //存储分配失败退出 L.length=0; //空表长度为0 return OK; } int Input_Sq(SqList &L) {//顺序表的输入 /**************begin************/ /**************end************/ } int Output_Sq(SqList L) {//顺序表的输出 /**************begin************/ /**************end************/ } int main() { SqList L; //定义一个SqList类型的变量L InitList_Sq(L); //初始化一个空的顺序表L Input_Sq(L); //输入数据 Ou
时间: 2025-05-21 17:39:58 浏览: 10
### 实现C++中基于结构体的顺序表输入和输出函数
以下是针对图书信息管理系统的顺序表输入 `Input_Sq` 和输出 `Output_Sq` 函数的具体实现方法。
#### 输入函数 `Input_Sq`
此函数负责从标准输入读取图书信息并存储到顺序表中。它会先接收图书数量,再逐一获取每本书的信息(书号、书名、价格)。为了便于操作,可以定义一个结构体来表示单本图书的数据模型:
```cpp
#include <iostream>
#include <string>
using namespace std;
// 定义图书结构体
struct Book {
string id; // 书号
string name; // 书名
double price; // 价格
};
// 定义顺序表结构体
const int MAX_SIZE = 100;
struct SqList {
Book data[MAX_SIZE]; // 存储图书信息的数组
int length; // 当前顺序表长度
};
```
下面是具体的输入函数实现:
```cpp
void Input_Sq(SqList &L) {
cout << "请输入图书总数:" << endl;
cin >> L.length;
if (L.length > MAX_SIZE || L.length < 0) { // 验证输入合法性
cerr << "错误:图书数量超出范围!" << endl;
exit(1);
}
for (int i = 0; i < L.length; ++i) {
cout << "请输入第 " << i + 1 << " 本书的信息(格式:书号 书名 价格):" << endl;
cin >> L.data[i].id >> L.data[i].name >> L.data[i].price;
// 数据验证可选部分
if (cin.fail()) { // 如果输入失败,则提示重新输入
cerr << "输入错误,请确保按照指定格式输入!" << endl;
exit(1);
}
}
}
```
#### 输出函数 `Output_Sq`
此函数用于遍历顺序表中的所有图书信息,并将其打印至控制台。具体实现如下所示:
```cpp
void Output_Sq(const SqList &L) {
if (L.length == 0) { // 判断列表是否为空
cout << "当前顺序表为空!" << endl;
return;
}
cout << "顺序表中共有 " << L.length << " 本书籍信息:" << endl;
for (int i = 0; i < L.length; ++i) {
cout << "书籍编号: " << L.data[i].id
<< "\t名称: " << L.data[i].name
<< "\t价格: " << L.data[i].price << endl;
}
}
```
以上两个函数分别实现了顺序表的输入与输出功能[^1]。通过调用这些函数,能够方便地管理和展示图书信息。
---
### 测试代码示例
下面提供了一个完整的测试程序框架供参考:
```cpp
int main() {
SqList bookList;
bookList.length = 0; // 初始化顺序表长度为零
Input_Sq(bookList); // 调用输入函数填充顺序表
Output_Sq(bookList); // 打印顺序表内容
return 0;
}
```
运行上述代码后,用户可以根据提示依次输入图书的数量及其详细信息,最终查看所录入的内容被正确输出。
---
阅读全文
相关推荐
















