解题思路:
本题描述清晰,我们只需要按照题目的说明,去操作即可。利用一个数组去提取ISBN中的9位数字和1位识别码,根据识别码的计算方法,求出识别码,然后将求出的识别码和输入的识别码进行判断,如果相等,就输出Right,否则,将输入的识别码修改为我们计算出的识别码。
参考程序:
#include<iostream>
using namespace std;
int main(){
int num[9] = {0};
int sum = 0;
int identifier; //识别码
string ISBN;
cin>>ISBN;
//提取数字
for(int i = 0,j = 0;i < ISBN.length();i++){
if(ISBN[i] >= '0' && ISBN[i] <= '9'){
num[j] = ISBN[i] - '0';
j++;
}else if(ISBN[i] == 'X'){
num[j] = 10;
}
}
//计算识别码
for(int i = 0;i < 9;i++){
sum += num[i] * (i+1);
}
identifier = sum % 11;
//正确性判断
if(identifier == num[9]){
ISBN = "Right";
}else{
if(identifier == 10){
ISBN[ISBN.length()-1] = 'X';
}else{
ISBN[ISBN.length()-1] = identifier + '0';
}
}
cout<<ISBN;
return 0;
}
程序结果: