c语言程序题:输入两个数列,再按从大到小的顺序合并成一个数列并输出

C语言程序题,写出完整程序:
输入两个数列,再按从大到小的顺序合并成一个数列并输出

随便写了下,vc6.0能正常编译的,附件中打包了这个软件。代码如下:

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main()
{
//输入两个数列的大小
int a_size = 0, b_size = 0;
printf("input A arrrary size:");
scanf("%d", &a_size);
printf("input B arrary size:");
scanf("%d", &b_size);
//动态分配两个数列的内存
int *pa = (int *)malloc(sizeof(int) * a_size);
int *pb = (int *)malloc(sizeof(int) * b_size);
int *pc = (int *)malloc(sizeof(int) * (a_size + b_size));
if (pa==0 || pb == 0 || pc==0) {
printf("can't malloc mem\n");
return 0;
}
memset(pa, 0x00, sizeof(int) * a_size);
memset(pb, 0x00, sizeof(int) * b_size);
memset(pc, 0x00, sizeof(int) * (a_size + b_size));
//输入数列内容
int inx = 0;
for (inx=0; inx!=a_size; ++inx) {
scanf("%d", &pa[inx]);
}
for (inx=0; inx!=b_size; ++inx) {
scanf("%d", &pb[inx]);
}
//合并两个数列
memcpy(pc, pa, sizeof(int) * a_size);
memcpy(pc+a_size, pb, sizeof(int) * b_size);
 
//冒泡排序
int  i, j, limit = a_size + b_size;
for (i=0; i!=limit; ++i) {
for (j=i+1; j!=limit; ++j)
{
if (pc[i] < pc[j])
pc[i] ^= pc[j], pc[j] ^= pc[i], pc[i] ^= pc[j];
}
}
//输出结果
for (inx=0; inx!=limit; ++inx) printf("%d\t", pc[inx]);
printf("\n");
//释放内存
free(pa);
free(pb);
free(pc);
return 0;
}

执行效果如下图:


温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-08

#include <stdio.h>
#include <stdlib.h>

int main()
{
    printf("请输入第一个数组的元素个数:\n");
    int as;
    scanf("%d",&as);
    printf("请输入元素:\n");
    int a[100];
    int i;
    for(i=0;i<as;i++)
    {
        scanf("%d",&a[i]);
    }
    printf("请输入第二个数组的元素的个数:\n");
    int sd;
    scanf("%d",&sd);
    printf("请输入元素:\n");
    for(i=as;i<as+sd;i++)
    {
        scanf("%d",&a[i]);
    }
    printf("排序后的结果是:\n");
    int k;
    int j;
    int t;
    for(k=0;k<as+sd;k++)
    {
        for(j=0;j<as+sd;j++)
        {
            if(a[k]>a[j])
            {
                t=a[k];
                a[k]=a[j];
                a[j]=t;
            }
        }
    }
    for(i=0;i<as+sd;i++)
    {
        printf("%d ",a[i]);
    }
    return 0;
}

本回答被提问者采纳
相似回答