c语言200例 054 寻找相同元素的指针

要求:比较两个有序数组中的元素,输出两个数组中第一个相同的元素值

关键:自定义find函数,实现程序功能

int *find(int *pa, int *pb, int an, int bn)
{
    int *pta,  *ptb;
    pta = pa;
    ptb = pb;
    while (pta < pa + an && ptb < pb + bn)
    {
        if (*pta <  *ptb)
            pta++;
        else if (*pta >  *ptb)
            ptb++;
        else
            return pta;
    }
    return 0;
}

运行结果如下

 

c语言200例 054 寻找相同元素的指针_第1张图片

参考代码如下

#include 
int *find(int *pa, int *pb, int an, int bn)
{
    int *pta,  *ptb;
    pta = pa;
    ptb = pb;
    while (pta < pa + an && ptb < pb + bn)
    {
        if (*pta <  *ptb)
            pta++;
        else if (*pta >  *ptb)
            ptb++;
        else
            return pta;
    }
    return 0;
}

int main()
{
    int *p, i;
    int a[] = 
    {
        1, 3, 5, 7, 9, 11, 13, 15
    };
    int b[] = 
    {
        2, 4, 6, 8, 11, 15, 17
    };
    printf("数组a:\n");
    for (i = 0; i < sizeof(a) / sizeof(a[0]); i++)
        printf("%d ", a[i]);
    printf("\n数组b:\n");
    for (i = 0; i < sizeof(b) / sizeof(b[0]); i++)
        printf("%d ", b[i]);
    p = find(a, b, sizeof(a) / sizeof(a[0]), sizeof(b) / sizeof(b[0]));
    if (p)
        printf("\n第一个相同的字符是%d\n ",  *p);
    else
        printf("没有找到相同的字符\n");
    return 0;
}


你可能感兴趣的:(c语言两百例,c语言,c++,算法)