一个C语言程序问题,合并两个数组元素,相同的元素只输出一个,并按大小顺序排列

2025-04-05 16:14:08
推荐回答(3个)
回答1:

你按照楼上那样改掉abc的类型定义后,往c数组里添加数据的循环改成下面这样。
i = 0;
j = 0;
k = p + q;
for (n = 0; n {
if (a[i] {
c[n] = a[i];
i++;
}
else if (a[i] == b[j])
{
c[n] = a[i];
i++;
j++;
k--;
}
else
{
c[n] = b[j];
j++;
}
}
if (i == p){
do{
c[n] = b[j];
j++;
n++;
} while (j < q);
}
else if (j == q){
do{
c[n] = a[i];
i++;
n++;
} while (i < p);
}

我解释一下吧,你第一个判断a[i]所以你需要在后面加上一个判断,如果i,j指针移动到了末尾,就停止比较,直接把多余的值,搬到c中就行了。

回答2:

类型定义都错了,改过之后就差不多了,注意输出用空格分隔下

#include 
#include 
#include 
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    {
        scanf("%d",&a[i]);
    }
    printf("\n");
    printf("please input the number for b:");
    for(i=0;i    {
        scanf("%d",&b[i]);
    }
    printf("\n");
    for(i=0;i    {
        for(j=i+1;j        {
            if(a[i]>a[j])
            {
                tmp=a[i];
                a[i]=a[j];
                a[j]=tmp;
            }
        }
    }
    for(i=0;i    {
        for(j=i+1;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    {
        if(a[i]        {
            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    {
        printf("%d ",a[i]);//output space
    }
    printf("\n");
    for(i=0;i    {
        printf("%d ",b[i]);
    }
    printf("\n");
    for(i=0;i    {
        printf("%d ",c[i]);
    }
    printf("\n");
    return 0;
}

回答3:

这要有人答就怪了