题解 | #整型数组合并#

整型数组合并

https://www.nowcoder.com/practice/c4f11ea2c886429faf91decfaf6a310b

#include <stdio.h>
#include <stdlib.h>
int cmp(const void*w,const void*x)
{
        return *(int*)w-*(int*)x;
}

int main()
 {
    int a,b;
    int num1[1000]={'\0'};
    int e,f,g,h,k,j,m,cf,r,s,t,x,y,c2,pp;
    int num2[1000]={'\0'};
    int num3[1000]={'\0'};

    scanf("%d",&a);
    b=0;
    cf=0;
    c2=0;
    while (scanf("%d",&num1[b])!= EOF)
     {
        b++;
        if(b==a)
        break;
     }
    scanf("%d",&e);
    f=0;
    while (scanf("%d",&num2[f])!= EOF)
    {
        f++;
        if(f==e)
        break;
    }
    h=t=x=0;
    //printf("%d\n",num2[2]);
    for(r=0;r<a;r++)
    {
        t=0;
        for(s=r+1;s<a;s++)
        {
            if(num1[r]==num1[s])
            {
                t++;
                
            }
              
        }
        if(t==0)
       {
        c2=c2+1;           //不重复就计数
        num3[x++]=num1[r];//前两行去重
       // printf("%d",num3[t]);
       }
       
    }
   // c2=a-2;
    pp=0;
   // printf("%d\n",c2);
  
        j=c2;
        h=0;
    while(h<e)//把第二个数组进行从第一个开始比较
    {
         m=0;                   //重复标记
       for(k=0;k<c2;k++)        //与目标数组比较
       {
            if(num2[h]==num3[k])
            {
                m++;            //重复则标记+1
            // printf("%d\n",m);
            }
        // printf("%d\n",m);
              
       }
       if(m==0)             //FOR循环结束后如果没有重复,就赋值
            {
           //  printf("%d\n",num2[h]); //赋值后目标二者都要加一
              num3[j]=num2[h];
              h++;
              pp=pp+1;  //增加的个数
              j++;
            //printf("%d\n",num2[h]);
            }
        else h++;                       //重复就不赋值,但是待比较也要加1
    }
        
    
    //printf("%d\n",pp);

    qsort(num3, c2+pp, sizeof(int), cmp);
      for(g=0;g<=(c2+pp-1);g++)
     {
        printf("%d",num3[g]);
     }
    return 0;
}

全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务