C语言小白,请问这个可以解释一下这个程序么?就是将1到9分成三组,每组作为三位数,满足比例1比2比3.

一直不懂为什么要写a[i/100]=1... 一直不懂为什么要写a[i/100]=1 展开
 我来答
参观西湖
2020-10-14 · 古籍有很多,写出来一起欣赏。
参观西湖
采纳数:919 获赞数:2313

向TA提问 私信TA
展开全部
这个代码的思路:因为要满足1:2:3,所以从i=123开始,列出每组可能的值,就是:
i,2i=j,3i=k
建立一个长度为10的数组,记录i j k代表的三位数字是否出现过。
如果出现一个,就在数组中对应位置做一个标记。
比如一个三位数378,会在数组的3、7、8位标记为1。
如果三个三位数正好在数组中标记了9个不同的位置,那么此组数符合要求。否则不符合。
--------------
对于一个三位数 i=378,要分别提取个位 十位 百位的数字,

i/100 的值,就是百位,378/100=3, 数组的第3个位置标记为1,a[3]=1
i%10的值,就是个位,378%10=8, 数组的第8个位置标记为1,a[8]=1
i/10%10的值,就是十位,378/10%10=7, 数组的第7个位置标记为1,a[7]=1
-----
详细解释,望采纳,
追问

您好!首先谢谢您的回答,可否追问一下?

"如果出现一个,就在数组中对应位置做一个标记。
比如一个三位数378,会在数组的3、7、8位标记为1。
如果三个三位数正好在数组中标记了9个不同的位置,那么此组数符合要求。"

为什么必须要将数组标记为1,是仅仅起一个标记作用么,那为什么不标记为其他的数?标记为2,3,,,这些数不可以么?我运行了下发现标记为2时结果就不一样了。截图如下,无人求助,真的太感谢您!

追答
标记为1方便计算。数组a[10],a[0]=0,如果剩余9个都标记为1,加起来等于9.
等标记结束,检测的时候,全部加起来看看是不是9就可以了。
标记为其他也可以,比如标记为2,如果一组数都符合, 数组a里面除了a[0]=0,其他9个都是2,检测的时候要判断 s 是不是等于18
不用谢,采纳就好。我喜欢答案被采纳。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式