int borrow_book(Book bookList[]) { char id[30]; int i; for(i=0;i<numbooks;i++) { printf("%-5s%-15s\n",bookList[i].id,bookList[i].name); } printf("输入您想借阅的书号:"); scanf("%s",id); for(i=0;i<numbooks;i++) { if(strcmp(id,bookList[i].id)>0&&bookList[i].available) { for(int j=numbooks;j>i;j--); { strcpy(bookList[j],bookList[j-1]); } strcpy(bookList[j].id, id); strcpy(bookList[j].name,bookList[j+1]); numbooks--; bookList[i].available=0; printf("借阅成功!\n"); return 1; } } for (int i=0;i<numbooks; i++) { printf("%-5s%-15s\n", bookList[i].id, bookList[i].name); }怎么订正
时间: 2024-03-26 08:34:36 浏览: 48
book_borrow_system.zip_Book 2_book borrow_book_borrow system_图书借
这段代码中有几个问题:
1. 在第15行,for循环后面多了一个分号,导致循环体为空,这会导致后面的语句无法执行。应该将分号删除。
2. 在第17行,将bookList[j]赋值给bookList[j-1],这里应该使用结构体赋值,即bookList[j-1] = bookList[j]。
3. 在第18行,将bookList[j+1]的值赋给bookList[j].name,这里应该赋值给bookList[j].name。
4. 在第19行,将numbooks减1,这里应该将numbooks减去1。
下面是订正后的代码:
```
int borrow_book(Book bookList[]) {
char id[30];
int i,j;
for(i=0;i<numbooks;i++) {
printf("%-5s%-15s\n",bookList[i].id,bookList[i].name);
}
printf("输入您想借阅的书号:");
scanf("%s",id);
for(i=0;i<numbooks;i++) {
if(strcmp(id,bookList[i].id)==0&&bookList[i].available) {
for(j=numbooks;j>i;j--) {
bookList[j-1] = bookList[j];
}
strcpy(bookList[j].id, id);
strcpy(bookList[j].name, bookList[j-1].name);
numbooks--;
bookList[i].available=0;
printf("借阅成功!\n");
return 1;
}
}
for (int i=0;i<numbooks; i++) {
printf("%-5s%-15s\n", bookList[i].id, bookList[i].name);
}
return 0;
}
```
阅读全文