如何使用C计算ISBN?
How to calculate ISBN using C?
下面是我的代码,应该计算一本书的 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;
第 int isbn[] = 0;
行是您的问题,您将数组的地址指向 0x0,这不是您的应用程序的有效地址 space。
您应该以其他方式初始化您的 isbn 数组。例如 int isbn[20]
。您应该给出一个足以容纳 ISBN 编号的长度。我只是以 20 为例。
下面是我的代码,应该计算一本书的 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;
第 int isbn[] = 0;
行是您的问题,您将数组的地址指向 0x0,这不是您的应用程序的有效地址 space。
您应该以其他方式初始化您的 isbn 数组。例如 int isbn[20]
。您应该给出一个足以容纳 ISBN 编号的长度。我只是以 20 为例。