C语言图书借阅函数错误分析及修正
是的,有几个错误:
-
在输入学生学号和书籍编号后,没有将它们分别赋值给变量 'student_id' 和 'book_id'。
-
在 'for' 循环中,'id' 变量没有初始化或赋值,应该使用书籍编号变量 'book_id' 进行比较。
-
在 'for' 循环中,若找到可用的书籍,应该将该书籍的 'available' 变量设置为 0,表示已经被借出。
-
在内层的 'for' 循环中,应该使用学生编号的变量 'student_id' 进行比较,而不是用 'i' 变量。
-
在内层的 'for' 循环中,应该将书籍编号赋值给学生已借书籍数组中的一个空槽位,而不是直接赋值为 'book_id'。
-
在内层的 'for' 循环中,应该使用 'break' 语句跳出循环,因为已经找到了对应的学生。
以下是修改后的代码:
void borrow_book() {
system("cls");
int student_id, book_id;
printf("请输入书籍编号和学生学号: \n");
scanf_s("%d %d", &book_id, &student_id);
for (int i = 0; i < book_count; i++) {
if (book_id == books[i].id && books[i].available) {
books[i].available = 0;
for (int j = 0; j < student_count; j++) {
if (student_id == students[j].id) {
for (int k = 0; k < MAX_BOOKS; k++) {
if (students[j].borrowed_books[k] == 0) {
students[j].borrowed_books[k] = book_id;
break;
}
}
break;
}
}
break;
}
}
}
原文地址: https://www.cveoy.top/t/topic/oEcU 著作权归作者所有。请勿转载和采集!