我参加了edx.org的CS50课程;它被称为计算机科学导论。
我试图解决第一周的问题集。所以用户输入信用卡号码,我必须开发某种算法来检查它的号码是否有效。为此,我需要将整个16位数字分成数字。而且我被困在这里。我想我需要循环执行此操作,逐步获取每个步骤,并且这样做我想将每个步骤的用户输入分成10,并以某种方式获得残留。
由于int
对其可容纳的位数的限制,我无法转换为int
类型。我该如何实现这种功能?我试过这个,但后来意识到它什么都没有......乍一看至少。 cre_num
会留下信用卡号。
long long check(long long cre_num)
{
double part, i;
for (i = 0.1; i <= 1; i = i+0.1)
{
if (cre_num/10 == i)
{
part = i;
}
}
return part;
}
答案 0 :(得分:3)
你需要输入一个向量,或者它的种类,数字的16位数(long int)?
当你将数字乘以10时,你会得到它的最后一位数字,如下所示:
13%10 = 3
3%10 = 3 (03 = 3)
523%10 = 3
所以,如果你%10你得到最后一个数字并放入你的向量,而不是你/ 10,因为/ 10将删除最后一个数字,即你已经保存的数字。
如果你愿意,我可以尝试编码,但我认为你已经完成了这样的工作。