c语言 程序填空?

(2)将已升序排好的两个字符串a和b中的字符按升序合并到字符串c中... (2)将已升序排好的两个字符串a和b中的字符按升序合并到字符串c中 展开
 我来答
515621078
2022-06-13 · TA获得超过167个赞
知道小有建树答主
回答量:271
采纳率:86%
帮助的人:83.9万
展开全部

先说答案:

第一个空
c[k] = a[i]; i++
第二个空
b[j]; j++
第三个空
'\0'

再说思路:

首先已知 i 和 j 分别代表选用 a 和 b 的索引,
既然是使用比较小的排在前边,
那如果 a[i] 比 b[j] 小,就肯定是选用 a[i]。
比如第一次比较时,a[0] < b[0],所以用 a[0]。
于是有 c[k] = a[i];
比较后其它地方没有给 i 或 j 自增,
a[0] 已经被写到 c[0] 位置了,
所以下一次比较应该使用 a[1] 与 b[0] 再进行比较,
因此需要进行 i++ 操作。
if结束后,不走else,直接k++,所以接下来是看c[1]是什么数字。
再执行一次发现 a[1] < b[0] ,i 变成 2,k变成2。

再看 else 部分,走到 a[2] 与 b[0] 的比较发现结果是
a[2] > b[0],所以此时 c[2] 应当使用 b[0],
因此用 c[k] = b[j] 来选用更小的答案。
随后与a一样,需要对 j 进行 ++,下一次使用 a[2] 与 b[1] 比较,
判断结束后 k++,下一次判断 c[3] 是 a[2] 还是 b[1]。

当所有判断结束后,两个char[] 已经按照顺序排列到了 c[] 里,
此时的 k 坐标在完成最后一次判断后还是 ++ 了一次,指向
len(a+b)+1 的位置。
因此最后一个按照c语言的规范应当填充 '\0' 做字符串的结尾。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式