题目是在顺序表中查找指定数,由于是在静态表中查找,操作较为简单,但题目有几个细节需要注意。
int search(int *data, int length, int value) {
int sum=0;
int x,y;
for(int i=0;i<length;i++){
sum++;
if(data[i]==value){
y=i;
break;
}
else if(data[i]>value||value<data[0]){
y=-1;
break;
}
if(sum>=length){
y=-1;
break;
}
}
printf("%d ",sum);
if(y!=-1){
printf("%d\n",y);
}
else{
printf("failed\n");
}
}
在search函数中,需注意for循环内部跳出循坏,即寻找不满足条件的地方,补上break,对于新手需要特别注意此类问题。如在代码中,由于是递增的顺序表,当查找数小于第一个数,或是数组中的当前数字已经大于查找数时,需跳出循环,还有当计数数sum大于数组长度时跳出循环。
最后调用数组的时候注意栈溢出的问题,此时不用打[ ]号。