怎么个回事,感觉我自己一路代下来没有问题,我m每次循环都重置了啊
找到后,输出位置,不能break;中断读入后续数字的操作,这么改,供参考:
#include <stdio.h>
int main()
{
int k,i,a,n,key,j,m;
scanf("%d", &k);
for (i = 1; i <= k; i++){
scanf("%d%d", &n, &key);
for (j = 0,m = 1; j < n; j++){
scanf("%d", &a);
if (m && key == a){ //只输出第一次出现的位置
printf("%d\n", j+1);
m = 0;
}
}
if (m) printf("-1\n");
}
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:程序调用自身的编程技巧称为递归,通常用于把一个复杂的问题层层简化为一个与原问题类似的规模更小的问题来解决。说的有点绕,中国话大概就是大事化小,小事化了。
我们用一个最简单的递归函数实例:求n的阶乘(n!)来解释一下递归的含义。
提示:n!=n * (n-1) * (n-2)… * 1
相当于:n!=n* (n-1!)
有两种情况: