请教大家一个编程问题
有两个整型数组A(N),B(M)(N>0,M>0),且已知A(1)≥A(2)≥A(3)≥…≥A(N), B(1)≥B(2)≥B(3)≥…≥B(M),请编写一段程序将数组A(N)与B(M)中的元素合并为一个新的数组C(M+N),且C(1)≥C(2)≥C(3)≥…≥C(N+M)(只限BASIC语言与C语言)
怎么看都像是作业嘛。
怎么到处都是这种归并的呀。
#include<stdio.h> void merge(int *a,int *b,int m,int n,int *c) { while(m&&n) { if(*a>*b) { *c=*a; a++; c++; m--; } else { *c=*b; b++; c++; n--; } } for(;m>0;m--) { *c=*a; a++; c++; } for(;n>0;n--) { *c=*b; b++; c++; } } void main() { int i; int A[5]={10,9,8,6,3}; int B[3]={9,7,2}; int C[8]; merge(A,B,5,3,C); for(i=0;i<8;i++) printf("%d ",C[i]); }写的很怪,故意的
#include <stdio.h> /**有两个整型数组A(N),B(M)(N>0,M>0),且已知A(1)≥A(2)≥A(3)≥…≥A(N), B(1)≥B(2)≥B(3)≥…≥B(M),请编写一段程序将数组A(N)与B(M)中的元素合并为 一个新的数组C(M+N),且C(1)≥C(2)≥C(3)≥…≥C(N+M)(只限BASIC语言与C语言)*/ void linkn(int *a,int *b,int n,int m,int *c) { //1.先把a[n]和b[m]中的元素都放入c[]中 int i,j,temp; for(i=0;i<m+n;i++) { if(i<n) *(c+i)=*(a+i); else *(c+i)=*(b+i-n); } //2.将c中的元素排序 for(i=0;i<m+n;i++) for(j=0;j<m+n;j++) { if(*(c+i) > *(c+j)) { temp=*(c+i); *(c+i)=*(c+j); *(c+j)=temp; } } } int main() { int a[5]={6,4,3,2,1}; int b[4]={7,6,5,0}; int c[9]; int i; linkn(a,b,5,4,c); for(i=0;i<9;i++) printf("%d ",c[i]); printf("\n"); } 这个自己写的 仅供参考哈