急求C语言中查找函数的代码

真心求解答!!非常感谢!!
数组名array,数组长度length,待查找的数x,返回数组元素值等于x的元素下标,查找不到则返回-1,函数原型为:int Retrieve(int array[],int length,int x);
我自己做的运行不了,不知道哪里错了,下面提供的仅供大神们做部分复制粘贴节省时间:
#include<stdio.h>
int Retrieve(int array[],int length,int *x);
int main()
{
int *a,*x;
int length,i;
scanf("%d",&length);
for(i=0;i<length;i++)
scanf("%d",*(a+i));
scanf("%d",x);
printf("%d\n",Retrieve(a,length,&x));
return 0;
}
int Retrieve(int array[],int length,int *x)
{
int *p,i;
i=0;
p=array;
while(i<length)
{
if(x==(p+i))
break;
i++;
}
if(i>length)
i=-1;
return i;
}

我去,几乎没有对的地方。
首先,指针默认只有一个地址的长度的空间,存不了那么多的字符。
其次,传值和传地址一塌糊涂,完全就是乱写么。
scanf的第二个参数是地址,如果本身不是指针则需要取址符。
我给你重写了算了
#include<stdio.h>
int Retrieve(int array[],int length,int x);/*形参x直接传值就可以了*/
int main()
{
int *a,x;
int length,i;

scanf("%d",&length);
a = (int)malloc(sizeof(int)*length); /*申请一个内存空间用来存放数据,或者直接用一个大数组也可以*/

for(i=0;i<length;i++)
scanf("%d",a+i);/*a本身就是一个地址,不需要加什么符号*/
scanf("%d",&x);/*x是变量,需要取址符*/

printf("%d\n",Retrieve(a,length,x));
return 0;
}
int Retrieve(int array[],int length,int x)
{
int i;
i=0;
/* p=array; 这句其实没必要*/
while(i<length)
{
if(x==array[i])
return i;/*既然找到了,那就直接返回就行了*/
i++;
}

return -1;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-12-26
#include<stdio.h>
int Retrieve(int array[],int length,int x); // 去 *
int main()
{
int a[100],x; // 改
int length,i;
scanf("%d",&length);
for(i=0;i<length;i++)
scanf("%d", a+i); // 改
scanf("%d", &x); //改
printf("%d\n",Retrieve(a,length,x)); //改
return 0;
}
int Retrieve(int array[],int length,int x)
{
int *p,i;
i=0;
p=array;
while(i<length)
{
if(x==(p+i))
break;
i++;
}
if(i>=length) // 改
i=-1;
return i;
}追问

大师,我试了几下,结果它出来的都是-1呀,怎么办呢

第2个回答  2012-12-26
........
第3个回答  2012-12-26
dagejiangyou

求c语言大神 题目:编写查找函数search(),实现如下功能。
if(pos==-1)printf("未能在序列中找到你要查找的数。\\n");else printf("你要查找的数在第%d个位置\\n",pos);return 0;}

求c语言大神 题目:编写查找函数search(),实现如下功能。
C代码和运行结果如下:输入5,成功输出了其在给定数组中的下标为4,结果正确,望采纳~附源码:include <stdio.h> int search(int a[], int n, int x) { \/\/ 返回数组a[]中x的下标 int i;for (i = 0; i < n; i++) { if (a[i] == x)return i;} return -1; \/\/ 数组中没...

用c语言写一个查找给定数组a中数值的函数
第三行包含一个整数a,为待查找的数。输出格式:如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。样例输入:6 1 9 4 8 3 9 9 样例输出 2 数据规模与约定 1 <= n <= 1000。数列(sequence of number),是以正整数集(或它的有限子集)为定义域的函数,是...

c语言编写函数int find()在指针p所指的数组中查找整型数x,如果x在...
int find(int *p,int n,int x);请问一下,你这是函数声明吗?如果是!就错在这了,声明函 数应该在main函数外!在main函数外声明好啦,在主函数里调用就可以啦!还有先调用后使用调用函数的返回值!在调用之前先传参!改如下!include<stdio.h> int find(int *p,int n,int x);void main()...

c语言:请编写函数myfun( ),其功能是:从3个形参a,b,c中找出中间的那个数...
include <stdio.h> int myfun(int a,int b,int c){ int t;t=(a>b)?(b>c?b:(a>c?c:a)):((a>c)?a:((b>c)?c:b));return t;} main(){ int a1=3,a2=5,a3=4,r;r=myfun(a1,a2,a3);printf("\\nThe middle number is: %d\\n ",r);} ...

C语言中使用函数实现:数据的输入,排序,输出和查找(要求折半查找递归实...
void isort(int *s,int n)\/*排序函数*\/ { int i,j;int *p,temp;for(i=0;i<n-1;i++){ p=s+i;for(j=i;j<n;j++)if(*p>s[j])p=s+j;temp=*p;p=s[i];s[i]=temp;} } int binsh(int *a, int c, int low, int high)\/*递归法实现的二分查找法,元素存在于a中则...

C语言查找字符串位置函数。请高手帮忙解决
int main(void) { char s1[80],s2[80];int n;printf("请输入一个字符串:");gets(s1);printf("请输入你要查找的字符串:");gets(s2);n=findstr(s1,s2);printf("%s在%s里共有%d个\\n",s2,s1,n);return 0;} int findstr(char *s_str,char *d_str) { int i,j,k,count=0;c...

用C语言写二分查找的代码!!!
推荐答案的 code 有问题,并没有考虑到若待查数的下标是 0 怎么办?所以若顺序表中不存在待查元素 应该 return -1 加上主函数的最后两行调用两次查找函数很多余,代码显得不够简练。建议改成:include <stdio.h>#include <stdlib.h>int Search(int *a, int key){ \/\/ 在顺序表中折半查找 ...

c语言中字符串查找函数是什么,调用格式是怎样的?
返回该字符串的首地址,用char*表示,如果不存在,则返回空指针NULL

请问到哪里可以找C语言的库函数的代码,例如PRINTF函数的代码
这个你找不到,我曾经在学习过程中也找过,只能在include文件夹下找到对于函数的定义,但函数体部分不可见.你可以到LINUX系统下找找,LINUX是完全开放源代码的.

相似回答