【发布时间】:2021-05-02 14:43:13
【问题描述】:
这里出了什么问题?如果我输入 4123456789098 则通过将此数字除以 10^12 应该等于 4 但不是?
我的代码:
#include <stdio.h>
#include <cs50.h>
#include <math.h>
int main(void)
{
while (true)
{
long long int id = get_long("Number: ") ;
int k = 0 ;
while (id != 0)
{
id = id / 10 ;
k++ ;
}
printf("%i\n", k) ;
// VISA
if (k == 13)
{
int x = id / pow(10 , 12) ;
if (x == 4)
{
printf("VISA\n") ;
break ;
}
else
{
printf("INVALID V\n") ;
}
}
// AMEX
else if (k == 15)
{
int y = id / pow(10 , 13) ;
if (y == 34 || y == 37)
{
printf("AMEX\n") ;
break ;
}
else
{
printf("INVALID A\n") ;
}
}
// VISA or MASTERCARD
else if (k == 16)
{
int z_M = id / pow(10 , 14) ;
int z_V = id / pow(10 , 15) ;
if (z_M >= 51 && z_V <= 55)
{
printf("MASTERCARD\n") ;
break ;
}
else if (z_V == 4)
{
printf("VISA\n") ;
break ;
}
else
{
printf("INVALID V or A\n") ;
}
}
}
}
输出:
Number: 4123456789098
13
INVALID V
预期输出:
Number: 4123456789098
13
VISA
【问题讨论】:
-
您是否打算将
1添加到信用卡号码中?除以23?乘以3?不!那么它不是一个数字:-)
标签: c if-statement while-loop cs50 credit-card