C语言编程:编写程序将两个有序数组A、B合并成另一个有序的数组C,设为升序。
#include<stdio.h>
voidmain()
{
inta[10],b[10],c[20],i,ia,ib,ic;
printf("pleaseinputthefirstarray\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
scanf("%d",&b[i]);
printf("\n");
ia=0;ib=0;ic=0;
while(ia<10&&ib<10)
{
if(a[ia]<b[ib])
{
c[ic]=a[ia];
ia++;
}
else{
c[ic]=b[ib];
ib++;
}
ic++;
}
while(ia<10)
{
c[ic]=a[ia];
ia++;
ic++;
}
while(ib<10)
{
c[ic]=b[ib];
ib++;
ic++;
}
for(i=0;i<20;i++)
{
printf("%5d",c[i]);}
}
扩展资料
C语言归并排序
#include<stdio.h>
#defineLEN8
inta[LEN]={5,2,4,7,1,3,2,6};
inttempa[LEN];
voidmerge(inta[],inttempa[],intleft,intright,intrightend)
{
inti,temp;
intleftend=right-1;
intnum=rightend-left+1;
temp=left;
while(left<=leftend&&right<=rightend)
{
if(a[left]<a[right])
{
tempa[temp++]=a[left++];
}
else
{
tempa[temp++]=a[right++];
}
}
while(left<=leftend)
{
tempa[temp++]=a[left++];
}
while(right<=rightend)
{
tempa[temp++]=a[right++];
}
for(i=0;i<num;i++,rightend--)
{
a[rightend]=tempa[rightend];
}
}
voidsort(inta[],inttempa[],intleft,intright)
{
intmid;
if(left<right)
{
mid=(left+right)/2;
sort(a,tempa,left,mid);
sort(a,tempa,mid+1,right);
merge(a,tempa,left,mid+1,right);
}
}
intmain()
{
sort(a,tempa,0,7);
for(inti=0;i<LEN;++i)
{
printf("%d,",a[i]);
}
return0;
}
#include<stdio.h>
#define M 4 //数组a的元素个数
#define N 3 //数组b的元素个数
void paixu(int a[],int w)
{
int i,j;
int t;
for(j=1;j<w;j++)
for(i=0;i<j;i++)
if(a[i]>a[j])
{
t=a[i];a[i]=a[j];a[j]=t;
}
}
void main()
{
int i,j=0,n=M;
int a[M],b[N],c[M+N];
printf("请输入数组a[%d]\n",M);
for(i=0;i<M;i++) scanf("%d",&a[i]);
paixu(a,M);
printf("请输入数组b[%d]\n",N);
for(i=0;i<N;i++) scanf("%d",&b[i]);
for(i=0;i<M;i++)
c[i]=a[i];
paixu(c,M);
for(j=0;j<N;j++)
{
c[M+j]=b[j];
paixu(c,n++);
}
paixu(c,M+N);
printf("插入数组后,排序:\n");
for(i=0;i<M+N;i++)
printf("%d ",c[i]);
printf("\n");
}
1、for( i = 1 to strlen(a) ) input->array[i];
2、for( i = strlen(a)+1 to strlen(a)+strlen(b) ) input->array[i];
3、sort(array[1] to array[end] );
4、output<-array;
伪代码就是这些,根据题意自己写一下就行了,你叙述的题意不清楚,没法写代码