线性搜索功能可编译但无输出

时间:2018-06-30 05:07:06

标签: c algorithm search linear-search

我不明白此线性搜索代码有什么问题。它可以编译,但执行时会退出而不输出。

turns - no. of test cases.
size  - size of array.
x     - element to be searched.


#include <stdio.h>

int linearSearch(int arr[], int size, int element)
{
    int i = 0;
    for(i=0; i< size; i++)
    {
        if(arr[i] == element)
        {
            return i;
        }
    }
    return 0;
}

int main()
{
    int turns, size;
    scanf("%d", &turns);

    while(turns--)
    {
        scanf("%d", &size);
        int arr[size];

        for(int j=0; j < size; j++)
        {
            scanf("%d", arr[j]);
        }
        int x;
        scanf("%d", &x);
        int k = linearSearch(arr, size, x);
    }

    return 0;

}

1 个答案:

答案 0 :(得分:2)

您的代码中有一个主要问题。

首先,您需要传递数组元素的地址(&arr[j])。

由于未打印输出,因此未显示输出。

正确的代码是

#include <stdio.h>

int linearSearch(int arr[], int size, int element)
{
    int i = 0;
    for(i=0; i< size; i++)
    {
        if(arr[i] == element)
        {
            return i;
        }
    }
    return 0;
}

int main()
{
    int turns, size;
    scanf("%d", &turns);

    while(turns--)
    {
        scanf("%d", &size);
        int arr[size];

        for(int j=0; j < size; j++)
        {
            scanf("%d", &arr[j]);
        }
        int x;
        scanf("%d", &x);
        int k = linearSearch(arr, size, x);
        printf("%d\n", k);
    }

    return 0;

}