C语言用函数查找元素下标 有好几个相同元素怎么办

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言用函数查找元素下标 有好几个相同元素怎么办相关的知识,希望对你有一定的参考价值。

比如数组为1,2,2,3
我输入要查找的是2,用函数return 只返回了一个下标 就是第一个2的下标 怎么让他全部都输出出来啊 求教啊 给个代码看看 我是小白

#include<stdio.h>
#include<string.h>
struct test

    int num[4];
    int k;
;
struct test Cal(int *s)

    struct test ans;
    ans.k = 0;
    int i;
    for(i = 0; i < 4; i++)
    
        if(s[i] == 2)
        
            ans.num[ans.k++] = s[i];
        
    
    return ans;

int main()

    int s[4] = 1, 2, 2, 3;
    struct test ans = Cal(s);
    int i;
    for(i = 0; i < ans.k; i++)
        printf("%d ", ans.num[i]);
    return 0;

参考技术A a[]=1,2,2,3;
其中a是数组,上面语句是给数组a赋值,通过赋值尅看出暂时数组a的最大的有效下标为3,
起始下标从0开始的。分解数组a:a[0]=1,a[1]=2,a[2]=2,a[3]=3.一个数组中的下标不会有重复的,从0开始递增,直到你定义的最大范围减1.例如有一个数组num[20],数组num的下标就
是从0开始直到20-1个( num[0] ~ num[19] )

JS查找数组指定元素

参考技术A findIndex它会返回数组中满足提供的函数的第一个元素的索引,否则返回 -1

跟findIndex差不多,只不过是倒序查找

观察可以知道findIndex 和findLastIndex的实现原理基本相同,区别只在于查找顺讯,那么如何通过实现一个函数,通过不同的传参来判断是使用findIndex还是findLastIndex呢?

实现:

新的需求:如何在一个排好序的数组中找到 value 对应的位置,保证插入数组后,依然保持有序的状态?

比如: sortedIndex([10, 20, 30], 25); // 2

如果是有序数组,那我们就不采用遍历的形式,采用二分法

看上去不错,基本实现了我们的要求,但还不够好,如果我想实现下面这种情况要怎么处理?

进阶实现:

现在尝试手写一个indexOf/lastIndexOf

indexOf和lastIndexOf都支持第二个参数fromIndex表示开始查找的位置。

在MDN上对fromIndex的解释如下:

fromIndex

开始查找的位置。如果该索引值大于或等于数组长度,意味着不会在数组里查找,返回-1。如果参数中提供的索引值是一个负值,则将其作为数组末尾的一个抵消,即-1表示从最后一个元素开始查找,-2表示从倒数第二个元素开始查找 ,以此类推。 注意:如果参数中提供的索引值是一个负值,并不改变其查找顺序,查找顺序仍然是从前向后查询数组。如果抵消后的索引值仍小于0,则整个数组都将会被查询。其默认值为0.

比如:

fromIndex

从此位置开始逆向查找。默认为数组的长度减 1(arr.length - 1),即整个数组都被查找。如果该值大于或等于数组的长度,则整个数组会被查找。如果为负值,将其视为从数组末尾向前的偏移。即使该值为负,数组仍然会被从后向前查找。如果该值为负时,其绝对值大于数组长度,则方法返回 -1,即数组不会被查找。

根据以上规则,我们实现第二版

主要围绕下面两点进行

根据以上要求,看下最终实现方法

以上是关于C语言用函数查找元素下标 有好几个相同元素怎么办的主要内容,如果未能解决你的问题,请参考以下文章

ZZNUOJ_用C语言编写程序实现1372:查找(附完整源码)

MATLAB中查找数组中的非零元素用啥函数

C语言问题 怎么做?

用C语言实现一维数组中删除第N个元素的程序怎么写

C语言,查找数组里重复出现的数字;

JS查找数组指定元素