#include <iostream>
#include<cstring>
using namespace std;
void cheak(char arr[])//定义一个函数用于检查ISBN号码
{
char b[13] = { 0 };//定义一个数组用于存放ISBN号码中的数字
int sum = 0;//累加求和器
int last = 0;//最后一位数字在数组中的位置
int j = 0;
for (unsigned int i = 0; i < strlen(arr); i++)//将数组中的数字选出来
{
if (arr[i] != '-')
{
b[j] = arr[i];
j++;
last = i;
}
if (arr[i] == '-')
continue;
}
for (int k = 0; k < 12; k++)//对数组中的数字按照题目要求进行处理
{
if ((k + 1) % 2 != 0)
{
sum = sum + (b[k] - '0') * 1;//注意输入的数字是char类型,需要转换为int类型进行计算
}
if ((k + 1) % 2 == 0)
{
sum = sum + (b[k] - '0') * 3;
}
}
int c = 0;
c = sum % 10;
if ((10 - c) == ((b[12] - '0') * 1))//判断ISBN号码是否正确
{
arr[last] == arr[last];
}
else if ((10 - c) == 10 && (((b[12] - '0') * 1) == 0))
{
arr[last] == arr[last];
}
else
{
if (10 - c == 10)
{
arr[last] = (0+'0');//将得到的正确的ISBN号码转换为char类型输入
}
else
arr[last] = ((10 - c) + '0');
}
}
int main()
{
char arr[17];
while (cin >> arr)
{
char brr[17] = { 0 };
for (int i = 0; i < 17; i++)
{
brr[i] = arr[i];//复制数组
}
cheak(arr);
if (brr[16] == arr[16])//比较ISBN号码最后一位是否相同
cout << "Right" << endl;
if (brr[16] != arr[16])
{
cout << arr << endl;
}
}
return 0;
}
判断图书的ISBN号码是否正确
于 2022-04-24 10:28:00 首次发布