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;
}

本回答被提问者采纳

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:"...

c语言用边排序边合并的方法把两个有序数列合并为一个新的有序数列,不...
归并排序:从小到大 \/ void Combine ( int tray1 [], int tray2 [], int result [], int tray1_len, int tray2_len ){ int i, j, k;for ( k = i = j = 0; i < tray1_len && j < tray2_len; ){ if ( tray1 [i] < tray2 [j] ){ result [k ++] = tray1 [...

C语言 ​ 对数列进行从小到大排序并输出
,a[i]);return 0;}刚才语气可能重了点,用我这个再试试吧。

将两组有序数列合并成一个新的有序递增数列,用c语言怎么编?
int a[len1] ={1,3,5,7,9},b[len2]={2,4,6,8,10};int c[len1+len2];int *pa=a,*pb=b,*pc=c,*end;while(pa<a+len1 && pb<b+len2){ if(*pa<*pb)pc++=*pa++;else pc++=*pb++;} if(pa==a+len1)end=pb;else end=pa;for(;pc<c+len1+len2;pc++)pc=*en...

C语言编程题目
下面是一些C编程题目:1. 编写程序,从键盘输入两个整数,输出它们的和、差、积、商、余数。2. 编写程序,从键盘输入三角形的三条边长,判断它们是否可以构成三角形,并输出三角形的类型(等边、等腰、一般)。3. 编写程序,从键盘输入字符串,统计其中的大写字母、小写字母、数字和其他字符的个数,并...

求两个数的最大公约数c语言
求两个数的最大公约数c语言如下:思路有两种:第一种,采用穷举法按从小到大(初值为1,最大值为两个整数当中较小的数)的顺序将所有满足条件的公约数列出,输出其中最大的一个;第二种,按照从大(两个整数中较小的数)到小(到最小的整数1)的顺序求出第一个能同时整除两个整数的自然数,即...

c语言题:输入四个数a,b,c,d,按从大到小的顺序输出
输出提示信息要求输入n个数。使用for循环读取输入的n个整数。p指向数组a。输出原始数列。使用嵌套for循环进行冒泡排序。内层循环从i+1到n,比较p+i与p+j的元素大小。若p+i小于p+j,交换两元素位置。p指向数组a。输出排序后的数列。程序结束返回0。此方法适用于任意多个数值按从大到小排序。

c语言问题: 输入格式 输入有多组数据。 每组数据两行。 第一行包含一...
2、接着在C语言文件的顶部导入库内容。3、接着运用scanf函数接收用户输入的字符串。4、然后我们利用printf函数打印一下用户输入的内容。5、运行程序以后就会弹出如下图所示的CMD界面,我们输入内容就会自动接收到,然后原样输出内容。6、最后如果你接收其他的类型,比如整数,那么类型就需要改变成int。

c语言编程:输入一个数字n,再输入n个数,将这个n个数从小到大输出。
scanf(输入n的值);\/\/输入个数 int array;\/\/把需排序的数列定义为数组。这里需要指出的是,如果定义为array[n-1],因为你的n在编译时未赋值,所以编译是不会通过的。于是这里直接将它定义为一个指针,赋值方法跟数组相同。但是个数太多就不能这么做了 for(i = 0;i < n;i++){ \/\/输入需要...

C语言输入俩个整数,输出他们之间所有整数的和?
首先,我们使用scanf函数从用户处接收输入的两个整数。然后,我们使用一个条件语句判断num1是否大于num2。如果是,则交换它们的值,确保num1始终小于或等于num2。接下来,我们使用一个循环(for循环)来迭代从num1到num2之间的所有整数。在每次迭代中,我们将当前数字累加到变量sum中。最后,我们使用printf...

相似回答