、从键盘依次输入10本图书信息(以顺序表存放),分别编写按书号、书名及价格等信息的查找函数,实现图书信息的查找。
说明:
(1)图书信息顺序表数据结构定义。
#define NUM_MAX 100
typedef struct {
char isbn[18];
char bname[50];
char publish[50];
float price;
}Book;
typedef struct{
Book book[NUM_MAX];
int length;
}Books;
typedef struct{
int idx_list[NUM_MAX];
int length;
} SearchResult;
(2)按书号查询的函数原型为:int findBookByIsbn(Books books, int index, char *isbn);,参数index表示查询的起始位置(从1开始计),成功返回其位置,失败时返回0。
(3)按书名查询的函数原型为:int findBookByBname(Books books, int index, char *bname);,参数index表示查询的起始位置(从1开始计),成功返回其位置,失败时返回0。
(4)按价格查询的函数原型为:void findBookByPrice(Books books, int index, float lower, float upper, SearchResult &sr);。lower和upper表示价格区间的下界和上界,查找结果中含上界和下界数据;参数sr为查找结果。
(5)按书号或书名查询时,能实现模糊查询,如查找“数据结构”时,查找关键字 “结”、“结构”、“数据”、“据结”或“据结构”皆满足查找要求。模糊比较采用BF算法,代码如下(其中,s为主串,t为子串,返回值为查找位置,0表示未找到)。
#include <string.h>
int search(char *s, char *t){
int lens = strlen(s);
int lent = strlen(t);
int i, j, k;
int x = lens - lent;
for (i = 0; i <= x; i ++){
for (j = 0, k = i; j < lent; j ++, k ++)
if (s[k] != t[j])
break;
if (j == lent)
break;
}
if (i <= x)
return i + 1;
return 0;
}
(6)输出顺序表中所有的图书信息,要求每本书显示一行,有标题,有序号。
(7)以上所有代码均放在sseach.h文件中。
2、从键盘依次输入10本图书信息(以顺序表存放),要求按价格升序顺序输入,以折半查找算法,按价格在整个顺序表中查询某本书的信息。
说明:
(1)输出10本图书的信息,格式同前。
(2)折半查找算法的函数原型为:int findBinBookByPrice(Books books, float price);。
(3)以上所有代码均放在sseach.h文件中。
把代码拼接起来就可以了,加上文件操作的内容。
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632