#include <iostream> using namespace std; const int MaxSize = 100; class LineSearch { public: int SeqSearch (int k); private: int data [MaxSize]; int length; }; int LineSearch::SeqSearch(int k) { int i =length; data[0] = k; while (data[i] != k) i -- ; return i; } int main() { int a[9] = {1,2,3,6,5,4,7,8,9}; int b = 2; int c = SeqSearch(b); }这段代码的错误在哪儿
时间: 2023-07-31 12:07:38 浏览: 73
这段代码中存在以下几个错误:
1. `SeqSearch`函数是类`LineSearch`的成员函数,因此在`main`函数中需要先创建一个`LineSearch`对象才能调用`SeqSearch`函数。
2. `SeqSearch`函数中的`i`初始值应该为`length - 1`,因为`length`代表数组中元素的个数,而数组下标是从0开始的。
3. `SeqSearch`函数中的`data[0] = k`是为了在数组中找到目标元素后,跳出循环。但是在函数结束后,数组中的数据已经被修改,因此需要在函数结束前将数组还原,即将`data[0]`重新赋值为原来的值。
以下是修改后的代码:
```c++
#include <iostream>
using namespace std;
const int MaxSize = 100;
class LineSearch {
public:
int SeqSearch (int k);
private:
int data [MaxSize];
int length;
};
int LineSearch::SeqSearch(int k) {
int i = length - 1;
int temp = data[0];
data[0] = k;
while (data[i] != k)
i--;
data[0] = temp;
return i;
}
int main() {
int a[9] = {1,2,3,6,5,4,7,8,9};
int b = 2;
LineSearch ls;
ls.length = 9;
for (int i = 0; i < 9; ++i)
ls.data[i] = a[i];
int c = ls.SeqSearch(b);
cout << "元素2的位置为:" << c << endl;
return 0;
}
```
在修改后的代码中,我们创建了一个`LineSearch`对象`ls`,并将数组`a`中的元素赋值给`ls`的成员变量`data`,然后调用`ls`的成员函数`SeqSearch`来查找元素2的位置。
输出结果为:
```
元素2的位置为:1
```
阅读全文