一道C语言程序填充题,问题如下,我看不懂为什么这么填,请详细解释一下,谢谢!

如题所述

说下这段代码思路。a、b两个数组,总有一个数组元素最先被使用完,那么之后存入c数组的元素只能是另一个数组的。i和j作为角标,就是用来表明a、b数组各用了多少元素。如果a、b数组都没用完,那么就要判断a、b谁出的元素小,小的存入c中(根据要求知c中元素由小到大排列)。追问

请问为什么数组元素会被使用完呢:)

追答

因为题目要求的是把a、b数组中的元素有序地存进c中,说明每个元素只能存一次,存进c后就不用再管了,相当于使用完了。

追问

嗯嗯。那么按照答案的话,不是数组a,b都正好用完了吗,不需要最后两个else if ,else了?

追答

a、b都用完是最终的结果,还有a、b数组都没用完的情况,这是最后两个else if else所处理的。

追问

请问为什么会没有用完的情况呢,不好意思哈

追答

我觉得你没明白整个思路。我打个比方来说吧,有两个按身高从矮到高排好的队伍,一个a队,一个b队。现在要求把两队合一队,也是从矮到高排。如果让我负责,我就会让排在两队第一个的人a1、b1比比身高,发现a1矮些,那么我就会让a1单独出来组成c队。然后,让a2和b1比比身高,发现b1比a2矮,那么b1排到c队。。。以此类推,后来我发现a队的人大多数都比b队矮,导致a队的人都已经排进c队了,而b队还剩几个人,那么剩下的这几个人直接依次排到c队就好了。

题目中的代码思路类似,只不过它考虑方式倒过来,它先根据角标j来判断b队是否排完,如果b队排完,那么让a队的排进c队;如果b队没排完,再根据角标i看a队,如果a队排完,就让b队的排进c队,如果a队也没排完,那么让目前a、b两队的人作比较,矮的排进c队。

追问

谢谢你的解答,很全面,很耐心:)我仔细思考了后,想问:是不是题目省去了a、b两数组比较大小的过程,直接开始把数组放入?

追答

没有省去,只是放在判断a、b是否用完后面,也就是在你所问过的最后两个else if, else部分。

追问

如果b队排完后a队也排进c队,我觉得这没有排序,不好意思哈,麻烦你再解释一下

追答

这里确实没排序,因为没必要了。原先a就是从小到大排好了的,既然b已经排完了,那么a就直接按次序排到c后面就行。

追问

好的,谢谢,麻烦你了:)

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网