我该如何正确

时间:2019-01-26 03:55:15

标签: c if-statement user-input

我是C编程的新手,我有一份正在努力的工作。我的问题是我想请用户输入国际标准书号(ISBN),但如果该号码不符合9780306406157,则它是无效的ISBN号。我尝试了我的代码,但是由于某种奇怪的原因,只要用户输入9780306406157,它都会给我一个无效的ISBN号,这是错误的...这是我的代码,

#include<stdio.h>
int main()
{
    int isbn;

    printf("Enter 13 digits of ISBN-13: ", isbn);
    scanf("%1d", &isbn);

    int isbn_13 = 9780306406157;

    if (isbn == isbn_13) 
    {
        printf("Valid ISBN number.");
    }

    else if (isbn != isbn_13) 
    {
        printf("Invalid ISBN number. ");
    }
    return 0;

}

1 个答案:

答案 0 :(得分:1)

所以您想要的数字是9,780,306,406,157,但是整数的最大值(可能是但具体取决于实现)为2,147,483,647。

int替换为unsigned long long,它应该可以工作。

也将scanf("%1d", &isbn);替换为scanf("%llu", &isbn);