#include<stdio.h> #include<stdlib.h> //利用输出特性,或新建第三个数组存放数据,原理相同 int main(){ int* arr1;//数组 int* arr2; int m=0,n=0;//个数 int i=0; int f1=0,f2=0;//浮标 scanf("%d %d",&m,&n); arr1=(int *)malloc(sizeof(int)*(m+1));//根据n的大小来规定数组的大小 arr2=(int *)malloc(sizeof(int)*(n+1)); for(i=0;i<m;i++){//输入数组 scanf("%d",&arr1[i]); } for(i=0;i<n;i++){//输入数组 scanf("%d",&arr2[i]); } i=0; while(i<(m+n)){ if(f1==m){//第一个数组遍历完结,第二个还未完时 //这里可以不加"&&(f2<n)",若判断到f1==m时,f2必然是小于等于n的; //这是由i控制的,i最大到n+m就决定了自增不会超过这个数即打印不会越界 printf("%d ",arr2[f2++]);//接着打印第二个数组剩余数 } else if(f2==n){//同上 printf("%d ",arr1[f1++]); } else if(arr1[f1]>=arr2[f2]){//打印小的数或相同数 printf("%d ",arr2[f2++]); } else if(arr1[f1]<=arr2[f2]){ printf("%d ",arr1[f1++]); } i++; } return 0; }