以下是我的代码,该代码应计算一本书的ISBN编号:

#include <cs50.h>
#include <stdio.h>
#include <math.h>

int main(void)
{
    int isbn[] = 0;
    printf("Please enter ISBN number: \n");

    scanf("%d", &isbn);
    int num = 0;
    int times_by = 1;
    long long sum;
    long long sum1;
    long long result = 0;
    for (num = 0; num <= 9; num++){
        sum = isbn[num] * times_by;
        sum1 = sum + sum;
        times_by++;
    }
    result = sum / 11;
    if (result == 0){
        printf("Yes\n");
    }
    else {
        printf("No\n");
    }
}


它告诉我isbn的启动程序有问题。我试图创建一个数组,输入的ISBN编号将保存到该数组之后,尽管我不确定这是否可行。

最佳答案

问题始于int isbn[]=0;这声明了没有大小的文件,这不能。

然后,您将isbn读为一个int,然后似乎要使用ISBN的每个数字进行计算。

为此,我建议声明char isbn[14]={0};(ISBN可以为13个字符,请参见isbn)。

然后将其读取为scanf("%13s", isbn);

并像这样处理:

    sum = (isbn[num]-'0') * times_by; // convert digit to number


注意:sum1 = sum + sum;应为sum1 = sum1 + sum;

注意:result = sum / 11;应为result = sum1 / 11;

注意:您必须初始化sum1long long sum1=0;

注意:result = sum1 / 11;不会给您剩余。使用result = sum1 % 11;

关于c - 如何使用C计算ISBN?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48188203/

10-12 05:30