我是编程新手(目前正在学习C并与cs50x课程一起工作)。我正在做问题集1,卡片。我应该编写一个程序,在其中输入信用卡号,它会为您提供信用卡的类型(AMEX,VISA等)。我需要有关此错误的帮助:“错误:预期的标识符或'('”
这是代码:
#include <stdio.h>
#include <cs50.h>
void print_credit_card_brand(long long ccn);
bool check_validity(long long credit_card_number);
int find_lenght(long long n);
bool checksum(long long ccn);
int main(void)
{
long long credit_card_number;
do
{
credit_card_number = get_long_long("Number: \n");
}
while (credit_card_number < 0);
if (check_validity(credit_card_number) == true)
print_credit_card_brand(credit_card_number);
else
printf ("INVALID\n");
}
bool check_validity(long long credit_card_number);
{
int len = find_lenght(credit_card_number);
return (len = 13 || len = 15 || len = 16) && checksum(credit_card_number);
}
int find_lenght(long long n);
{
int len;
for (int len = 0; n ! = 0; n/=10, len++)
return len;
}
bool checksum(long long ccn);
{
int sum = 0;
for (int i = 0; ccn!= 0; i++; ccn/= 10)
{
if(i % 2 == 0)
sum += ccn % 10;
else
{
int digit = 2 * (ccn % 10);
sum += digit / 10 + digit % 10;
}
return (sum % 10) == 0;
}
}
void print_credit_card_brand(long long ccn);
{
if ((ccn >= 34e13 && ccn < 32e13) || (ccn >= 37e13 && ccn < 38e13))
printf ("AMEX\n");
else if (ccn >= 51e14 && ccn < 56e14)
printf("MASTERCARD\n");
else if ((ccn >= 4e12 && ccn < 5e12) || (ccn >= 4e15 && ccn < 5e15))
printf("VISA\n");
else printf("INVALID\n");
}
答案 0 :(得分:1)
在此处删除分号。 :D
bool check_validity(long long credit_card_number); <--------
{
int len = find_lenght(credit_card_number);
return (len = 13 || len = 15 || len = 16) && checksum(credit_card_number);
}
int find_lenght(long long n); <---------
.
.
.
答案 1 :(得分:0)
您的代码中有一些错别字:
每个函数定义的末尾都有一个额外的
;
,请将其全部删除。bool checksum(long long cc); { ^ //... }
此:
return (len = 13 || len = 15 || len = 16) && checksum(credit_card_number);` ^ ^ ^
您可能想要
==
。
此:
for (int i = 0; ccn!= 0; i++; ccn/= 10) ^
您可能想要:
for (int i = 0; ccn!= 0; i++, ccn/= 10)
此:
for (int len = 0; n ! = 0; n/=10, len++) ^
您将要删除该空间并将其设置为
!=
。