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

#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);
}
请问哪里错了 程序没错误 去执行的时候就显示程序已停止工作

#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);
}

温馨提示:答案为网友推荐,仅供参考
相似回答