void manager() { int option; Book bookList[MAX_BOOKS]; while(1) { printf("--------------------------------\n"); printf("-----------管理员菜单-----------\n"); printf("-- 1.添加书籍 --\n"); printf("-- 2.查询书籍 --\n"); printf("-- 3.删除书籍 --\n"); printf("-- 0.退出管理 --\n"); printf("--------------------------------\n"); printf("请输入您需要的功能按钮:"); scanf("%d", &option); switch (option) { case 1: addbook(bookList); break; case 2: displaybook(bookList); break; case 3: deletebook(bookList); break; case 0:printf("感谢使用!\n"); break; } printf("是否选择继续?(Y/N)"); scanf(" %c", &option); if (option=='N'||option=='n') { printf("再见!\n"); } } }如何改正
时间: 2023-09-21 22:08:26 浏览: 90
代码中存在一个问题,即当用户输入 Y 或者 N 后,程序没有正确处理用户的输入,导致程序进入错误的状态。应该修改为如下代码:
```
void manager() {
int option;
Book bookList[MAX_BOOKS];
char continueOption;
do {
printf("--------------------------------\n");
printf("-----------管理员菜单-----------\n");
printf("-- 1.添加书籍 --\n");
printf("-- 2.查询书籍 --\n");
printf("-- 3.删除书籍 --\n");
printf("-- 0.退出管理 --\n");
printf("--------------------------------\n");
printf("请输入您需要的功能按钮:");
scanf("%d", &option);
switch (option) {
case 1:
addbook(bookList);
break;
case 2:
displaybook(bookList);
break;
case 3:
deletebook(bookList);
break;
case 0:
printf("感谢使用!\n");
return;
default:
printf("无效的选项,请重新输入!\n");
break;
}
printf("是否选择继续?(Y/N)");
scanf(" %c", &continueOption);
} while (continueOption == 'Y' || continueOption == 'y');
printf("再见!\n");
}
```
修改后,程序会在用户输入 Y 或者 N 后正确处理用户的输入,并且在用户选择退出管理后,直接返回到上一层函数。
阅读全文