题目如下:编写函数int find(int *p,int n,int x),在指针p所指的数组中查找整型数x,如果x 在数组中,则该函数返回1,否则返回0。n为数组的大小。我已经将程序写完,但是说这里要int *d[10]=a才对,为什么我这里要&a才能运行呢,如果我按照所说的=a就报错了,还是他讲错了?
#include <stdio.h>
int main()
{int find(int *p,int n, int x);
int a[10]={1,11,21,31,41,51,61,71,81,91};
int (*d)[10]=&a;
int c,m;
printf("请输入要查找的整型数:");
scanf("%d",&c);
m=find(*d,10,c);
if(m==1)
printf("%d在数组中",c);
else
printf("%d不在数组中",c);
}
int find(int *p,int n, int x)
{int i;
for(i=0;i<n;i++)
{if(x==p[i])
{return 1;
break;
}
else
{return 0;
}
}
}
d是指针类型
下面的写法也可以
int *d=a;
int c,m;
printf("请输入要查找的整型数:");
scanf("%d",&c);
m=find(d,10,c);
...
函数int find(int *p,int n,int x) 里逻辑有错误,修改如下,改动处见注释,供参考:
#include <stdio.h>
int main()
{
int find(int* p, int n, int x);
int a[10] = { 1,11,21,31,41,51,61,71,81,91 };
int* d = a; //int(*d)[10] = &a; 修改
int c, m;
printf("请输入要查找的整型数:");
scanf("%d", &c);
m = find(d, 10, c); //m = find(*d, 10, c); 修改
if (m == 1)
printf("%d在数组中", c);
else
printf("%d不在数组中", c);
}
int find(int* p, int n, int x)
{
int i;
for (i = 0; i < n; i++)
{
if (x == p[i])
{
return 1;
//break; 修改
}
}
//else 修改
// { 修改
return 0;
//} 修改
//} 修改