如何在C ++中解决线性搜索问题?

时间:2019-02-13 05:48:13

标签: c++ arrays algorithm

给定代码的输出应该是数组中元素的索引号,但是我没有得到预期的输出。

这是我的代码:

int main() {
    int n, a, b;
    int arr[100];
    cout << "Enter the size of array";
    cin >> n;
    cout << "Enter the number to find";
    cin >> a;
    cout << "Enter elements in array";
    for (int i = 0; i < n; i++)
        cin >> arr[n];
    for (int i = 0; i < n; i++) {
        if (arr[n] == a) {
            cout << n;
        } else
            n++;
    }
    return 0;
}

3 个答案:

答案 0 :(得分:3)

这里:

if(arr[n]==a)

您需要使用i

if(arr[i]==a)

完整的else情况是多余的;去掉它。另外,您必须确保n <= 100,否则您有安全漏洞(缓冲区溢出)。 对于数组索引,请使用std::size_t而不是int

答案 1 :(得分:2)

您使用'n;作为数组索引以获取输入并匹配搜索元素。应该是“ i”而不是“ n”。

#include <iostream>
using namespace std;

int main()
{
 int n,a,b;
 int arr[100];
 cout<<"Enter the size of array";
 cin>>n;
 cout<<"Enter the number to find";
 cin>>a;
 cout<<"Enter elements in array";
 for(int i=0;i<n;i++)
    cin>>arr[i];

 for(int i=0;i<n;i++){
    if(arr[i]==a)
    {
        cout<<i<< "";
    }
 }
 return 0;
}

答案 2 :(得分:0)

@Erlkoenig所说:

“您需要使用i:

result = [] for i in range(9): total = 0 for key,value in percent.items(): # On each iteration, it selects the `ith` element from each list and adds to `total` variable. total += value[i] result.append(total) 完整的else情况是多余的;去掉它。另外,您必须确保n <= 100,否则您有安全漏洞(缓冲区溢出)。将if(arr[i]==a)中的std::size_t instead用于数组索引。“

此外,int可能会给您一个分段错误(不依赖于起始n以及您将如何快速找到“要查找的数字”。我很确定,如果数字不在数组中,会出现结皮错误。