c语言程序题:输入两个数列,再按从大到小的顺序合并成一个数列并输出
2个回答
展开全部
随便写了下,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;
}
执行效果如下图:
展开全部
#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;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询