预期输出的第二条应该是"Sorry, the book on position doesn't exist!"
时间: 2024-09-17 13:06:02 浏览: 28
帝国CMS刷新数据表article提示Table ‘empirecms.phome_ecms_’ doesn’t exist的解决
是的,根据提供的测试输入和预期输出,原始的`FindLocate_Sq()` 函数在处理查询时存在问题。当输入第二个查询(即`m = 2`)时,函数应该检查索引是否有效,而不是查找所谓的“最佳位置”。在`for`循环内的条件应该是判断`pos`是否在合法范围内(从1开始到`L.length`),而不仅仅是等于`L.length`。
修复后的代码会检查索引是否越界,并在不存在的书籍位置输出相应的错误信息:
```cpp
int FindLocate_Sq(SqList L)
{
int m;
cin >> m;
if (m <= 0 || m > L.length) {
cout << "Invalid query number!" << endl;
return OK;
}
for (int i = 0; i < m; i++) {
int pos;
cin >> pos;
if (pos == 0 && L.length != 0) {
Book &book = L.elem[0];
cout << book.no << ' ' << book.name << ' ' << fixed << setprecision(2) << book.price << endl;
} else if (1 <= pos && pos <= L.length) { // 将 pos == L.length 移除,并改为 1 <= pos
Book &book = L.elem[pos - 1]; // 减去1以便匹配索引计数
cout << book.no << ' ' << book.name << ' ' << fixed << setprecision(2) << book.price << endl;
} else {
cout << "Sorry, the book on position " << pos << " doesn't exist!" << endl;
}
}
return OK;
}
```
现在,当你运行`main`函数并输入第二个查询2时,预期输出将是正确的错误消息:"Sorry, the book on position doesn't exist!"。
阅读全文