为什么仍然出现“期望的标识符”错误?

时间:2020-06-19 23:15:38

标签: c cs50

我是编程新手(目前正在学习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");
}

2 个答案:

答案 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++)
                     ^

您将要删除该空间并将其设置为!=