大家好,我是一童,今日分享简单地指针查找:
1.寻找指定元素的指针
# include<stdio.h>/*寻找指定元素的指针*/
#define N 10
int Search(int *p,int n,int key)/*首元指针,元素个数,寻找值*/
{
int *q;
for(q=p;q<p+n;q++)
if(*q==key)
return q-p;
return -1;
}
int *Find(int *p,int n,int key)/*返回指针型的函数*/
{
int *q;
for(q=p;q<p+n;q++)
if(*q==key)
return q;
return NULL;
}
void main()
{
int a[N],i,key;
printf("请输入数组:");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
printf("\n");
printf("输出数组元素:\n");
for(i=0;i<sizeof(a)/sizeof(a[0]);i++)
printf("%d ",a[i]);
printf("请输入您要查找的元素: ");
scanf("%d",&key);
printf("\n");
printf("查找的数的是%d,在数组中的位置是:%d\n",key,Search(a,N,key));
printf("查找的数的是%d,在数组中的地址值是:%d\n",key,Find(a,N,key));
}
- 寻找两个数组中相同的元素
#include <stdio.h>
#define N 5
int *Search(int *pa,int *pb,int a,int b)/*寻找两个数组中相同的元素*/
{
int *pca,*pcb;
pca=pa;pcb=pb;
while(pca<pa+a&&pcb<pb+b)
{
if(*pca<*pcb)
pca++;
else if(*pca>*pcb)
pcb++;
else
return pca;
}
return 0;
}
void main()
{
int i,*p,a[N],b[N];
printf("请输入数组a的元素:");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
printf("\n");
printf("请输入数组b的元素:");
for(i=0;i<N;i++)
scanf("%d",&b[i]);
printf("\n");
printf("数组a的元素:\n");
for(i=0;i<sizeof(a)/sizeof(a[0]);i++)
printf("%d ",a[i]);
printf("\n");
printf("数组b的元素:\n");
for(i=0;i<sizeof(b)/sizeof(b[0]);i++)
printf("%d ",b[i]);
p=Search(a,b,sizeof(a)/sizeof(a[0]),sizeof(b)/sizeof(b[0]));
printf("\n");
if(p)
printf("两个数组中第一个相同的元素为:%d\n",*p);
else
printf("没找到!!!\n");
}
若有错误或看不懂的地方,欢迎下方留言!!!