求大神救命,急!!!从键盘依次输入10本图书信息(以顺序表方式)

、从键盘依次输入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