以下是我的代码,该代码应计算一本书的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;
注意:您必须初始化
sum1
:long long sum1=0;
注意:
result = sum1 / 11;
不会给您剩余。使用result = sum1 % 11;
关于c - 如何使用C计算ISBN?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48188203/