2.(25分)某项目组每年都会购入一批不同书籍(不超过100本)供学生使用,为便于对书籍进行管理,请编写一段程序。首先从键盘输入新购入书籍的数量,然后分别输入新购书籍的作者名称(作者名称不超过20个字符)和长度为4位的唯一数字编号保存在二维字符数组中。当需要查阅书籍信息时,从键盘输入某一书籍的编号,或从键盘输入书籍的作者名称,则在屏幕上输出匹配该编号或作者名称的书籍信息,信息格式为:书籍的编号*书籍的作者名称;如果未找到匹配的信息,则输出:”No such book found!\n”。 请按如下函数原型编写书籍查找程序: int Search(char author[][N], char code[][N],int n, char find[]); // author[][N]:书籍的作者名称 //code[][N]:书籍的编号 //n:新购入书籍的数量 //find[]:查询关键字(书籍编号或书籍作者名称) //函数返回值:若找到符合要求的书籍,则返回find在author或code数组中的下标位置,若找不到,则返回-1 书籍数量输入格式:“%d” 书籍作者名称和编号输入格式:“%s%s”,注意书籍作者名称和编号输入时用空格分隔 要查找的书籍作者名称或编号的输入格式:“%s” 匹配到的书籍信息输出格式:使用 puts()函数,或者“%s\n” 注意1:购入书籍时,每名作者只购买一本他写的书,即作者名称和书籍的编号都是不同且唯一的; 注意2:不进行输入正确性检查; 注意3:为避免输出信息不一致,请拷贝题目中的输出提示信息到程序中。
时间: 2024-02-05 17:10:30 浏览: 80
```c
#include <stdio.h>
#include <string.h>
#define N 21
#define MAX_NUM_BOOKS 100
int Search(char author[][N], char code[][N], int n, char find[]);
int main() {
char author[MAX_NUM_BOOKS][N], code[MAX_NUM_BOOKS][N];
int n, i;
char find[N];
printf("Input the number of books:\n");
scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("Input the author and code of book %d:\n", i + 1);
scanf("%s %s", author[i], code[i]);
}
printf("Input the code or author of the book you want to search:\n");
scanf("%s", find);
int index = Search(author, code, n, find);
if (index == -1) {
puts("No such book found!\n");
} else {
printf("%s*%s\n", code[index], author[index]);
}
return 0;
}
int Search(char author[][N], char code[][N], int n, char find[]) {
int i;
for (i = 0; i < n; i++) {
if (strcmp(author[i], find) == 0 || strcmp(code[i], find) == 0) {
return i;
}
}
return -1;
}
```