C语言里的1~9分成1:2:3的三个3位数 问题

2024-11-29 05:50:21
推荐回答(2个)
回答1:

a[9]在这里用于保存一个三位数及其2倍和3倍数的每一位,比如开始时m=123,则调用ok函数:ok(123, a),会在 a[0]中 保存3 (123 % 10 = 3),,a[1]保存2,a[2]保存1,它的二倍数246保存在a[3]-a[5]中(调用ok(m*2, a+3),但要判断一下前面是否有重复的数,这里先将6保存在a[3],4保存在a[4],2保存在a[5],这时从数字a中已经存在的数中比较发现有2(a[1]中),则返回0,说明123这个数不满足条件。
return 0返回到主函数,然后在主调函数中将m+1,循环调用下一个ok(m, a)
return 1也是返回到主调函数

回答2:

a[9]保存本次分解出来的数字,方便下次分解中比较是否有重复。