我正在尝试编写一个程序,其中用户输入 ISBN 然后检查条目的准确性。国际标准书号是0201702894
. 校验位(第 4 位)由其他 9 位计算得出,如下所示 - (每个位的总和乘以它的位置)模 11。Ex: (0*1 + 2*2 + 0*3 + 1*4 + 7*5 + 0*6 + 2*7 + 8*8 + 9*9)%11 = (0+4+0+4+35+0+14+64+81)%11 = 4 (202/11 = 18 remainder 4)
校验位可以检测 ISBN 何时输入或复制不正确。
每次我输入值时,我总是有“ISBN 不正确”的输出。我的逻辑有问题。
1. Correct Value: 0201702894
2. Incorrect value: 0201702984
代码:
#include <iostream>
using namespace std;
int totalNumbersCheck=0;
int main()
{
int isbnArray[10]; //array to store the ISBN numbers
int ISBN=0; //inputted ISBN number
//user input
cout<<"Please enter the ISBN number: ";
cin>>ISBN;
//ISBN storage
isbnArray[ISBN];
//ISBN calculation
for(int i=0;i<10;i++)
{
totalNumbersCheck=isbnArray[i]*(i+1);
}
//remove last element from array
totalNumbersCheck-=isbnArray[10];
//check if remainder equals last element and output correct response
if(totalNumbersCheck%11==isbnArray[10])
{
cout<<"\nThe ISBN is correct.";
}
else
cout<<"\nThe ISBN is not correct.";
cin.get();
cin.get();
return 0;
}