我正在制定一项程序,检查CS50级别的信用卡号码的有效性(我是合法的,我发誓哈哈),而我目前正在开展工作正确获取每个CC#的前两个数字,以检查它来自哪个公司。我已经评论了每个部分为清晰起见所做的事情,并评论了我的问题出现的地方。
pub fn make_parser<R>(stream: R) -> Box<Parser>
where
R: io::Read + 'static,
{
Box::new(ParserImpl::new(stream))
}
答案 0 :(得分:0)
第一个问题是循环中的+count
。这应该是++count
。因此,count
保持为0和power = -2
。你可以避免所有的力量。你已经有了循环,你可以用它来得到前两位数字:
int ft = 0;
while (ccn1 != 0)
{
// When you are down to 10 <= ccn1 < 100, store it
if (ccn1 < 100 && ccn1 > 9) ft = ccn1;
ccn1 /= 10;
++count;
}
你的第二个问题是如何进行比较。
if ((count == 15) && (ft = 34|37))
首先,=
是赋值,==
测试相等。其次,|
是按位OR,||
是逻辑OR。第三,你不能测试那样的多个值。正确的方式:
if ((count == 15) && (ft == 34 || ft == 37))