【发布时间】:2020-12-17 11:48:58
【问题描述】:
当通过 cs50 的 submit50 检查运行我的程序时,除了验证 4222222222222 之外,一切正常,因为输出了 VISA(而不是 INVALID)。当我之前打印出count变量时,有时会输出VISA。任何解决方案都将不胜感激,因为我似乎无法正确解决此问题。
说明:编写一个程序,提示用户输入信用卡号,然后根据此处每种格式的定义报告(通过
printf)它是有效的美国运通卡、万事达卡还是维萨卡号。为了使我们可以对您的代码进行一些自动化测试,我们要求您的程序的最后一行输出为AMEX\n或MASTERCARD\n或VISA\n或INVALID\n,仅此而已
#include <stdio.h>
#include <cs50.h>
int main(void)
{
//get input from user
long CardNum = get_long("Input credit card number:");
bool nvalid = true;
//count number of digits
int count = 0;
long temp1num = CardNum;
while (temp1num > 0)
{
temp1num = temp1num / 10;
count++;
}
//printf("%i\n", count);
if (!(count == 13 || count == 15 || count == 16))
{
printf("INVALID\n");
}
else
{
.....
问题出现在代码的开头,所以我只复制了那部分。
【问题讨论】:
标签: c cs50 credit-card luhn