是的,有几个错误:

  1. 在输入学生学号和书籍编号后,没有将它们分别赋值给变量 'student_id' 和 'book_id'。

  2. 在 'for' 循环中,'id' 变量没有初始化或赋值,应该使用书籍编号变量 'book_id' 进行比较。

  3. 在 'for' 循环中,若找到可用的书籍,应该将该书籍的 'available' 变量设置为 0,表示已经被借出。

  4. 在内层的 'for' 循环中,应该使用学生编号的变量 'student_id' 进行比较,而不是用 'i' 变量。

  5. 在内层的 'for' 循环中,应该将书籍编号赋值给学生已借书籍数组中的一个空槽位,而不是直接赋值为 'book_id'。

  6. 在内层的 '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;
        }
    }
}
C语言图书借阅函数错误分析及修正

原文地址: https://www.cveoy.top/t/topic/oEcU 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录