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);
}
请问哪里错了 程序没错误 去执行的时候就显示程序已停止工作 展开
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);
}
请问哪里错了 程序没错误 去执行的时候就显示程序已停止工作 展开
1个回答
展开全部
#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);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询