在数组中查找指定元素

发布时间:2023年12月19日

本题要求实现一个在数组中查找指定元素的简单函数。

函数接口定义:

int search( int list[], int n, int x );

其中list[]是用户传入的数组;n(≥0)是list[]中元素的个数;x是待查找的元素。如果找到

则函数search返回相应元素的最小下标(下标从0开始),否则返回?1。

裁判测试程序样例:

#include <stdio.h>
#define MAXN 10

int search( int list[], int n, int x );
    
int main()
{
    int i, index, n, x;
    int a[MAXN];

    scanf("%d", &n);
    for( i = 0; i < n; i++ )
        scanf("%d", &a[i]);
    scanf("%d", &x);
    index = search( a, n, x );
    if( index != -1 )
        printf("index = %d\n", index);
    else
        printf("Not found\n");
            
    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例1:

5
1 2 2 5 4
2

输出样例1:

index = 1

输入样例2:

5
1 2 2 5 4
0

输出样例2:

Not found

代码:

指针方法:

int search(int list[], int n, int x)
{
    int* plist = list;//当指针遇到数组时的定义方式
    int a = 0;
    int flag = 0;
    for (int i = 0; i < n; i++)
    {
        if (plist[i] == x)//注意这个使用方式
        {
            a = i;
            flag = 1;
            break;
        }
    }
    if (flag == 1)
        return a;
    else
        return -1;
}

?为什么要用指针:

我们可以使用指针来遍历数组,因为指针可以直接指向数组的元素,从而可以更加方便地访问和操作数组中的元素。另外,使用指针可以避免在函数调用中进行数组的复制,从而提高了程序的效率。

注意:

1.int* plist = list;//当指针遇到数组时的定义方式,因为list数组名为其地址

2.plist直接被赋值成数组list的地址,所以可以plist[i] == x这样使用

方法二:
?

int search(int list[], int n, int x)
{
    int flag = 0;
    for (int i = 0; i < n; i++)
    {
        if (list[i] == x)
        {
            flag = 1;
            return i;
        }
    }
    if (flag == 0)
        return -1;
}

文章来源:https://blog.csdn.net/Y2663438690/article/details/135096027
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。