C语言,编写程序,通过指针操作,比较两个有序数组中的元素,输出两个数组中第一个相同的元素值

如题所述

c语言指针2个数组查询比较代码如下:

#include <stdio>
int main()
{
    int *lpa,*lpb;
    int a[100],b[100],alen,blen,i,j;
    printf("输入数组a长度:\n");
    scanf("%d",&alen);
    printf("输入%d个有序数据给数组a\n",alen);
    for(i=0;i<alen;i++) scanf("%d",&a[i]);
    printf("输入数组b长度:\n");
    scanf("%d",&blen);
    printf("输入%d个有序数据给数组a\n",alen);
    for(i=0;i<alen;i++) scanf("%d",&a[i]);

    //查询比较
    lpa=a;
    for(i=0;i<alen;i++)
    {
        lpb=b;
        for(j=0;j<blen;j++)
        {
            if(*lpb==*lpa) break;
            lpb++;
        }
        if(*lpb==*lpa) break;
        lpa++;
    }

    if(*lpb==*lpa)
    {
        printf("两数组中发现第一个相同元素:%d",*lpa);
    }
    else
    {
        printf("两数组中没有发现相同元素");
    }
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-06-04
#include <stdio.h>#include <stdlib.h>#include <malloc.h>int main(){ int *a=NULL;///int int *b=NULL; int *c=NULL; int i,j,tmp,n,k,p,q; printf("please input the number of the number you want in a:"); scanf("%d",&p); a=(int*)malloc(sizeof(int)*p);//convert to int* printf("please input the number of the number you want in b:"); scanf("%d",&q); b=(int*)malloc(sizeof(int)*q); c=(int*)malloc(sizeof(int)*(p+q)); printf("please input the number for a:"); for(i=0;i<p;i++) { scanf("%d",&a[i]); } printf("\n"); printf("please input the number for b:"); for(i=0;i<q;i++) { scanf("%d",&b[i]); } printf("\n"); for(i=0;i<p;i++) { for(j=i+1;j<p;j++) { if(a[i]>a[j]) { tmp=a[i]; a[i]=a[j]; a[j]=tmp; } } } for(i=0;i<q;i++) { for(j=i+1;j<q;j++) { if(b[i]>b[j]) { tmp=b[i]; b[i]=b[j]; b[j]=tmp; } } } i=0; j=0; k=p+q; for(n=0;n<k;n++) { if(a[i]<b[j]) { c[n]=a[i]; i++; continue; } if(a[i]==b[j]) { c[n]=a[i]; i++; j++; k--; continue; } else { c[n]=b[j]; j++; continue; } } for(i=0;i<p;i++) { printf("%d ",a[i]);//output space } printf("\n"); for(i=0;i<q;i++) { printf("%d ",b[i]); } printf("\n"); for(i=0;i<n;i++) { printf("%d ",c[i]); } printf("\n"); return 0;}
相似回答