数组传入数据不对的问题

/创建一个函数search_idx,将和有n个元素的数组v中的key相等的所有
元素的下标存储在数组idx中,返回和key相等的元素的个数。
/

#include

#define MAX_SIZE 10

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

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

return num;

}

int main(void)
{
int n, v[MAX_SIZE], idx[MAX_SIZE], key, i, num;

printf("请输入v数组的元素个数(< %d):", MAX_SIZE);
scanf("%d", &n);

printf("请输入v数组的元素:");
for(i = 0; i < n; i++){
    //printf("请输入v数组的元素:");
    scanf("%d",&v[i]);
}

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

num = search_idx(v, idx, key, n);

printf("key为%d,它在v数组中的个数和下标为:%d\n", key, num);
for(i = 0; i < num; i++){
    printf("%d ",idx[i]);
}
putchar(10);

return 0;

}
编译出的在v数组中的个数和下标不对

key = v[n];是啥个意思啊???
key都是要搜索的数啊,这行删掉吧

可观看性实在太差,我们不好观察呐