【发布时间】:2014-10-24 11:34:28
【问题描述】:
除法算法说明给定两个整数a和d,且d≠0,存在唯一整数q 和 r 使得 a = qd + r 和 0 ≤ r ,其中 | d| 表示d 的绝对值。整数q为商,r为余数,d为除数,a为被除数.提示用户输入除数和除数,然后显示除法算法的结果:
如果 a = 17 且 d = 3,则 q = 5 且 r = 2,因为 17 = 5 * 3 + 2。
如果 a = 17 且 d = -3,则 q = -5 且 r = 2,因为 17 = -5 * -3 + 2。
整数除法的 C++ 运算符不符合除法算法。在向程序用户显示的输出中解释何时预期结果与除法算法不一致。该程序不应尝试解决此问题。
好的,所以我这几天一直在尝试解决这个问题,但我就是无法破解它。我能想到解决这个问题的唯一方法是使用 mod 来找到 r 或使用连续减法来找到 q。但是,我很确定这两种解决方案都不算数。有没有其他方法可以解决这个问题?
[编辑] 我认为连续减法不起作用,因为那只是欧几里得算法,所以我真的不会使用这个算法,使用模数就像使用 C++ 除法运算符一样。
【问题讨论】:
-
首先编写一个程序,在给定 a 和 dq 和 r /i>。然后,将问题描述中显示的示例值插入该函数,并查看 q 和 r 的值。如果您在编写除法函数时遇到问题,请展示您所做的工作以寻求帮助。