使用C语言定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据来完成图书信息表的创建,然后根据指定的最佳位置的序号,查找该位置上的图书,输出相应图书的信息。 输入 总计n+m+2行。首先输入n+1行,其中,第一行是图书数目n,后n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。其中书号和书名为字符串类型,价格为浮点数类型。然后输入m+1行,其中,第一行是一个整数m,代表查找m次,后m行每行内容为一个整数,代表待查找的图书的位置序号。 输出 输出m行 若查找成功: 输出内容为第i次查询的指定位置上的一本图书的信息(书号、书名、价格),书号、书名、价格用空格分隔,其中价格输出保留两位小数。 若查找失败: 只输出以下提示:抱歉,最佳位置上的图书不存在!
时间: 2024-03-25 15:38:52 浏览: 81
以下是使用C语言定义一个包含图书信息的顺序表,并根据指定位置序号查找图书的完整代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 100 // 定义图书信息表的最大长度
// 定义图书信息结构体
typedef struct {
char book_id[20]; // 书号
char book_name[50]; // 书名
float price; // 价格
} Book;
// 定义图书信息表结构体
typedef struct {
Book books[MAX_SIZE]; // 存储图书信息的数组
int length; // 图书信息表的长度
} BookList;
// 初始化图书信息表
void init(BookList *book_list) {
book_list->length = 0;
}
// 向图书信息表中添加一本图书
void add_book(BookList *book_list, char *book_id, char *book_name, float price) {
if (book_list->length >= MAX_SIZE) {
printf("图书信息表已满,无法添加新的图书!\n");
return;
}
Book book;
strcpy(book.book_id, book_id);
strcpy(book.book_name, book_name);
book.price = price;
book_list->books[book_list->length++] = book;
}
// 根据位置序号查找图书
void find_book(BookList *book_list, int pos) {
if (pos <= 0 || pos > book_list->length) {
printf("抱歉,最佳位置上的图书不存在!\n");
return;
}
Book book = book_list->books[pos - 1];
printf("%s %s %.2f\n", book.book_id, book.book_name, book.price);
}
int main() {
BookList book_list;
init(&book_list); // 初始化图书信息表
int n, m;
scanf("%d", &n);
// 读入n本图书的信息
for (int i = 0; i < n; i++) {
char book_id[20], book_name[50];
float price;
scanf("%s %s %f", book_id, book_name, &price);
add_book(&book_list, book_id, book_name, price);
}
scanf("%d", &m);
// 查找m次最佳位置上的图书
for (int i = 0; i < m; i++) {
int pos;
scanf("%d", &pos);
find_book(&book_list, pos);
}
return 0;
}
```
使用示例:
输入:
```
5
B001 C语言程序设计 29.99
B002 数据结构与算法 49.99
B003 计算机网络 39.99
B004 操作系统 59.99
B005 计算机组成原理 69.99
3
2
3
5
```
输出:
```
B002 数据结构与算法 49.99
B003 计算机网络 39.99
B005 计算机组成原理 69.99
```
阅读全文