两个自小到大的整形数组,找出两个数组的交集的元素

#include<stdio.h>
int search(int *apt,int n,int key)
{
    int *p;
    for(p=apt;p<apt+n;p++)                          //寻找特定元素
        if(*p==key)
            return p-apt;
    return -1;
}
 
int b[]={90,80,70,60,50,40,772,294,1065,184};
 
int a[]={90,80,70,60,50,40,30,20,10,9,8,7,6,5,42,40,50,1,2,3};        //在这里定义的好处是,可以在任意函数中通用
 
 main()    
{
    int i;
    int c[sizeof(b)/sizeof(b[0])];
    int q=0;
    int d; 
    printf("The elements of array a is:\n");       //输出a数组中的元素
    for(i=0;i<sizeof(a)/sizeof(a[0]);i++)
    {
        printf(" %d",a[i]);
    }
    printf("\n");
    printf("The elements of array b is:");         //输出b数组中的元素
    for(i=0;i<sizeof(b)/sizeof(b[0]);i++)
    {
        printf(" %d",b[i]);
    }
    printf("\n");
    for(i=0;i<sizeof(b)/sizeof(b[0]);i++)          //对b中数组的每一个数字都和a中的数字对比一次
    {
        int key;
        key=b[i];                                  //关键字是b数组中第i个数字
  
        d=search(a,sizeof(a)/sizeof(a[0]),key);    //寻找关键字
        if(d>-1)
        {
            c[q]=key;                              //这里要保存数组元素的值key,而不是数组下标d
            q=q+1;                                 //这句话应该放在后面,因为数组下标从0开始
        }
    }
    printf("The number is:\n",q);
    for(i=0;i<q;i++)                               //这里i的取值应该为i<q
        printf(" %d",c[i]);
    return 0;
 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值