c语言 定义一个包含图书信息(书号,书名,定价)的顺序表,使其具有如下功能: (1) 根据顺序表的定义,完成图书信息表的初始化; (2) 根据指定图书的数,逐个输入图书的信息; (3) 逐个显示图书表中所有图书的相关信息; (4) 统计表中图书个数。
时间: 2024-12-24 21:37:08 浏览: 2
在C语言中,我们可以使用结构体(struct)来表示图书信息,并结合数组或链表(这里假设使用动态内存管理的简单线性表)来实现一个顺序表。以下是一个简单的示例:
首先,我们定义一个结构体`Book`来存储书号、书名和定价:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int bookID;
char title[50];
float price;
} Book;
```
然后,我们可以创建一个`BookList`类型的变量来代表图书顺序表,并初始化它:
```c
#define MAX_BOOKS 10 // 表的最大容量
// 初始化函数
void initialize(BookList *list) {
list->books = (Book *)malloc(MAX_BOOKS * sizeof(Book));
list->size = 0;
}
```
接下来,提供功能来添加图书信息:
```c
// 添加图书函数
void addBook(BookList *list, Book newBook) {
if (list->size < MAX_BOOKS) {
list->books[list->size] = newBook;
list->size++;
} else {
printf("图书表已满,无法添加。\n");
}
}
```
现在我们需要函数来展示和统计图书信息:
```c
// 显示所有图书信息
void displayBooks(BookList *list) {
for (int i = 0; i < list->size; i++) {
printf("书号:%d, 书名:%s, 定价:%.2f\n",
list->books[i].bookID, list->books[i].title, list->books[i].price);
}
}
// 统计图书数量
int countBooks(BookList *list) {
return list->size;
}
```
最后,你可以通过主程序调用这些函数来实现整个流程:
```c
int main() {
BookList bookList;
initialize(&bookList);
// 输入和添加图书
int numBooks;
scanf("%d", &numBooks);
while (numBooks--) {
Book newBook;
scanf("%d", &newBook.bookID);
fgets(newBook.title, sizeof(newBook.title), stdin); // 防止换行符
float price;
scanf("%f", &price);
newBook.price = price;
addBook(&bookList, newBook);
}
// 显示和统计图书
displayBooks(&bookList);
printf("图书总数:%d\n", countBooks(&bookList));
return 0;
}
```
阅读全文