C语言,编写find函数,在一维数组x中查找是否有key,若有返回该数组元素下标,否则返回1。

#include<stdio.h>intfind(inta[10],intkey){intn=0,i;for(i=0;i<10;i++){if(a[i]==key)ret... #include<stdio.h>
int find(int a[10],int key)
{
int n=0,i;
for(i=0;i<10;i++){
if(a[i]==key)
return i;
}
if(i==10)
return 1;
}
void main()
{
int n,i,m;
int a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
scanf("%d",&m);
if(find(a[10],m)!=1){
n=find(a[i],m);
printf("m=%d的下标为%d",m,n);
}
else
printf("m=%d的下标不存在",m);
}
请问哪里错了 程序没错误 去执行的时候就显示程序已停止工作
展开
 我来答
lyw0210
2015-05-17 · TA获得超过163个赞
知道小有建树答主
回答量:75
采纳率:50%
帮助的人:27.6万
展开全部
#include<stdio.h>
int find(int *a,int n,int key) //int a[10]里的10没有意义,直接写int a[]或int *a,一个意思 

int i;
for(i=0;i<n;i++){
if(a[i]==key)
return i;
}
return -1;//我觉得返回-1更合理,非要返回1的话你自己改吧 
}
void main()
{
int n,i,m;
int a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
scanf("%d",&m);
n=find(a,10,m);//把这个放外面更好 
    if(n!=-1) //你要传入的是数组即传入一个数组指针,a[10]是一个数组元素的值 ,你最主要的错误就是这里 
printf("m=%d的下标为%d",m,n);
else
printf("m=%d的下标不存在",m);
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式