typedef struct { char id[30]; char name[30]; //书名 char author[30]; //作者 char press[30]; //出版社名 int available;//1表示未借出,0表示已借出 }Book; int numbooks=5,user_num=0; Book bookList[MAX_BOOKS]={ {"1","唐诗三百首","孙洙","南京大学出版社",1}, {"2","三体","刘慈欢","北美权威科幻类出版社",1}, {"3","稻草人","叶圣陶","湖南儿童出版社",1}, {"4","老人与海","海明威","上海译文出版社",1}, {"5","c语言","泰戈尔","浙江文艺出版社",1}}; 借书
时间: 2023-07-19 10:50:07 浏览: 85
好的,以下是借书函数的代码:
```
void borrowBook(Book bookList[], int numbooks, char id[]) {
int i;
for (i = 0; i < numbooks; i++) {
if (strcmp(id, bookList[i].id) == 0) {
if (bookList[i].available == 0) {
printf("该书已被借出,请选择其他书籍!\n");
return;
} else {
bookList[i].available = 0;
printf("借书成功!\n");
return;
}
}
}
printf("未找到该书,请重新输入书籍编号!\n");
}
```
函数的作用是根据输入的书籍编号 `id` 来进行借书操作。如果输入的书籍编号不存在,则会提示重新输入;如果该书已经被借出,则无法进行借书操作;如果该书未被借出,则将该书的 `available` 标志改为 0,表示该书已经被借出。
相关问题
//管理员书单 typedef struct { int id; //书号 char name[30]; //书名 char author[30]; //作者 char press[30]; //出版社名 } Book; Book book1[MAX_BOOKS]={ {1,"唐诗三百首","孙洙","南京大学出版社"}, {2,"三体","刘慈欢","北美权威科幻类出版社"}, {3,"稻草人","叶圣陶","湖南儿童出版社"}, {4,"老人与海","海明威","上海译文出版社"}, {5,"c语言","泰戈尔","浙江文艺出版社"}};
这段代码定义了一个结构体`Book`,包括书号、书名、作者和出版社名。同时创建了一个`book1`数组,包含了5本书的信息。`MAX_BOOKS`常量应该是定义在其他地方的,用来表示`book1`数组的最大长度。这段代码实现了一个管理员书单的功能,可以让管理员查看、添加、删除图书信息等。您可以根据需要在这个基础上进行开发。
typedef struct { char id[30]; char name[30]; //书名 char author[30]; //作者 char press[30]; //出版社名 int available;//1表示未借出,0表示已借出 }Book;Book bookList[MAX_BOOKS]={ {"1","唐诗三百首","孙洙","南京大学出版社",1}, {"2","三体","刘慈欢","北美权威科幻类出版社",1}, {"3","稻草人","叶圣陶","湖南儿童出版社",1}, {"4","老人与海","海明威","上海译文出版社",1}, {"5","c语言","泰戈尔","浙江文艺出版社",1}}; for(int j=0;j<numbooks;j++) { printf("%5s\t%15s\t%10s\t%25s\n",bookList[j].id,bookList[j].name,bookList[j].author,bookList[j].press); }为什么这样会出现乱码
这样出现乱码的原因可能是因为编译器输出字符时采用的是默认编码方式,而默认编码方式与你的控制台窗口的编码方式不一致导致的。可以尝试将输出编码方式改为与控制台窗口相同的编码方式。
在 Windows 操作系统中,控制台窗口的默认编码方式是 GBK 编码。因此,可以将输出编码方式改为 GBK 编码,如下所示:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
typedef struct {
char id[30];
char name[30]; //书名
char author[30]; //作者
char press[30]; //出版社名
int available;//1表示未借出,0表示已借出
} Book;
Book bookList[MAX_BOOKS]=
{
{"1","唐诗三百首","孙洙","南京大学出版社",1},
{"2","三体","刘慈欢","北美权威科幻类出版社",1},
{"3","稻草人","叶圣陶","湖南儿童出版社",1},
{"4","老人与海","海明威","上海译文出版社",1},
{"5","c语言","泰戈尔","浙江文艺出版社",1}
};
int main()
{
setlocale(LC_ALL, "chs"); // 设置本地化环境为中文
system("chcp 936"); // 设置控制台编码方式为 GBK 编码
int numbooks = 5;
for(int j=0;j<numbooks;j++) {
printf("%5s\t%15s\t%10s\t%25s\n",bookList[j].id,bookList[j].name,bookList[j].author,bookList[j].press);
}
return 0;
}
```
在上面的代码中,我们通过 `setlocale` 函数将本地化环境设置为中文,通过 `system` 函数调用控制台命令 `chcp 936` 将控制台编码方式设置为 GBK 编码,这样就可以在控制台窗口中正确输出中文了。
阅读全文