编辑代码

#include <stdio.h>

#define NUMBER  10    /*元素个数*/
#define FAILED  -1  /*查找失败*/

/*查找元素为 n 的数组 v 中 与 key 数值一致的元素。
将该元素的下标储存在数组 idx 中,并返回数组 idx 最终的元素个数*/

int search_idx(const int v[], int idx[], int key, int n)
{
    int i;
    int j = 0;

    for (i = 0; i < n; i++)
    {
        if (v[i] == key)
        {
            idx[j] = i;
            j++;
        }
    }

     return (j > 0) ? j : FAILED;
}

int main(void)
{
    int i;
    int n;
    int vx[NUMBER];
    int ky;
    int idx;
    int vidx[NUMBER];

    do
    {
        printf("请输入数组的数量(不超过%d):", NUMBER);
        scanf("%d", &n);
    }while (n > NUMBER);

    for(i = 0; i < n; i++)
    {
        printf("x[%d]:", i); scanf("%d", &vx[i]);
    }

    printf("请输入要查找的值:"); scanf("%d", &ky);

    if ((idx = search_idx(vx, vidx, ky, n)) == FAILED)
        printf("查找结果为0。\n");
    else
        printf("%d是数组中的第", ky);
        for (i = 0; i < idx; i++)
        {
            if (i == idx - 1)
                printf("%d", vidx[i]);
            else
                printf("%d、", vidx[i]);
        }
        printf("号元素。");

    return 0;
}