c - 我该如何正确

标签 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;

}

最佳答案

因此,您想要的数字是 9,780,306,406,157,但整数的最大值是(可能,但具体实现)2,147,483,647。

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

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

关于c - 我该如何正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54375544/

相关文章:

将 argv 转换为静态字符串,或 Visual C++ 2010 中的错误

c - 运行时错误(堆栈溢出)

c - 将 Haskell 行翻译成 C

java - 检查您的登录名和密码(Java Web、Servlets)

c - 按第一个元素然后按 C 中对的第二个元素对 vector 对进行排序

perl - 使用 if 语句时是否可以匹配 perl 中的部分单词(包括 bash 示例)

mysql - 在现有字段上使用 If sum 条件更新新列

assembly 堆栈 - 反向输入和打印输出

c++ - 无法解决问题

javascript - getElementById() 和输入表单