麻烦帮我解释哈这个c语言程序,题目是将两个有序的数组合并到另一个数组中,要求后仍有序

main(){inti=0,m=5,a[5]={1,3,7,9,13};intj=0,n=6,b[6]={2,4,8,16,20,24};intk=0,c[11];whi... main()
{
int i=0,m=5,a[5]={1,3,7,9,13};
int j=0,n=6,b[6]={2,4,8,16,20,24};
int k=0,c[11];
while(i+j<m+n)
{if(j>=n) c[k++]=a[i++];
else if(i>=m) c[k++]=b[j++];
else if(a[i]<b[j]) c[k++]=a[i++];
else c[k++]=b[j++];
}
for(i=0;i<k;i++) printf("%d",c[i]);
}
特别是从while语句开始,重点解释哈那几个if语句啊
展开
 我来答
百度网友b452582
推荐于2018-03-28 · TA获得超过2581个赞
知道小有建树答主
回答量:953
采纳率:100%
帮助的人:350万
展开全部
m是a数组中数据的总数,n是b数组中数据的总数
i用于在数据a到c的传递中控制a的数组下标,总是a[i]被传递给C[k]
j用于在数据b到c的传递中控制b的数组下标, 总是b[j]被传递给C[k]
while 循环的条件表示,当被传递给c的数据元素小于a、b中的数据总数时,循环继续进行
if(j>=n)表示当b中传递给c数据总数达到了b数组中数据总数,就是说,当b数组中的数据已经全部传递给c的情况下,只要把a中的剩余数据传递给c即可。
否则,当j<n时,检验是否i>=m,即是否a中的所有数据已经进入c数组,如果i>=m表明a组中的数据已经全部进入了c,则直接将b组中的剩余数据送入c即可。
只有在当j<n 而且 i<m 时,才需要比较当前的a【i】和b【j】,那个小那个优先送入数组C。
密码比较简单
2010-10-25 · TA获得超过1996个赞
知道小有建树答主
回答量:1083
采纳率:0%
帮助的人:776万
展开全部
这程序写的可以,书上的吧,首先第一个if是说如果b中的元素都复制光那么下面全部复制a的,下一个if也是一个意思,但是是复制b,后面的两个if很简单就是ab对位相比较,把小数留下,,然后复制过的数组指针向前,这个你懂吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式