c - 线性搜索功能编译但没有输出

标签 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;

}

最佳答案

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

首先你需要传递数组元素的地址(&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;

}

关于c - 线性搜索功能编译但没有输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51111914/

相关文章:

c++ - 一个 VBO 可以绑定(bind)到多个 VAO 吗?

c++ - 非常简单的 ASN1 示例

在 OpenMP 循环中调用 execv

c++ - 如何以最好、最简单的方式在文件中搜索?

java - 线性搜索查找数组中目标的最后一个索引

c - Strtok 和 fgets Objective C 函数导致读取错误以及段错误

algorithm - 有没有办法估计 A* 找到路径的进度?

algorithm - 求个位数数组的 N 个最大元素的总和

algorithm - 检查所有给定的顶点是否都在路径上

mysql - NHibernate 全文搜索