计算 ISBN 的校验位
这实际上不是家庭作业,我只是在下周开始计算机科学之前浏览一本离散数学书中的一些问题。
不管怎样,其中一个问题要求我编写一个程序来执行这个算法(它解释了)。我所困惑的部分是如何获取 9 位数字并将其“拆分”为单个整数,以便可以对每个数字执行计算。
我想把这个数字除以 100,000,000,然后取它的整数值来得到第一个数字,但我不知道如何得到其他数字。
如果这是在 PHP 或其他东西中,我可以使用explode(),但我想这不是重点:P
This isn't actually homework, I'm just looking through some questions in a discrete maths book before I start computer science next week.
Anyway, one of the questions asks me to write a program to perform this algorithm (which it explains). The part I'm stuck with is how to take the 9 digit number and "split" it into single integers, so the calculations can be performed on each digit.
I thought of dividing the number by 100,000,000 and then taking the integer value of this to get the first digit, but I'm not sure how to get the others.
If this was in PHP or something I could just use explode(), but I guess that's not the point here :P
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用模运算:
use the modulo operation:
除以 100,000,000 并获取整数值后,您可以将该整数值乘以 100,000,000,然后从 ISBN 中减去它。这实际上只是去掉了最左边的数字。现在,重复 10,000,000 - 等等。
5 位数字示例:
等等!
Once you've divided by 100,000,000 and taken the integer value, you can then multiply this integer value back by 100,000,000 and subtract it from the ISBN. That effectively just takes off the left-most digit. So now, repeat with 10,000,000 - and so on.
Example with 5 digits:
and so on!
您可以使用 mod(%) 和 除(/) 运算符。
N%10 将为您提供最后一位数字。
N/10(整数除法)将删除最后一位数字。
您可以继续,直到没有更多的数字为止。
You can use the mod(%) and divide(/) operator.
N%10 would give you the last digit.
N/10 (integer division) will remove the last digit.
You can continue till you have no more digits.