201312-2-ISBN号码-CCF

本文介绍了一种使用C++实现的ISBN校验码计算与验证算法。通过对输入的ISBN字符串进行处理,该算法能够计算出ISBN的校验码,并验证其是否正确。具体步骤包括读取字符串中的数字部分,按特定规则加权求和,然后计算模11的余数作为校验码。最后,将计算得到的校验码与ISBN字符串中提供的校验码进行比较,判断ISBN的有效性。

解题思路:不错的模拟。 

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){
	string str;
	cin>>str;
	int num=1;
	int sum=0;
	for(int i=0;i<12;i++){
		if(str[i]>='0'&&str[i]<='9'){
			sum+=num*(str[i]-'0');
			num++;
		}
	}
	int last=sum%11;
	if((last==str[12]-'0'&&last!=10)||(last==10&&str[12]=='X')){
		cout<<"Right"<<endl;
	}
	else{
		if(last==10){
		 str[12]='X';	
		}
		else {
		str[12]=last+'0';	
		}
		cout<<str<<endl;
	}
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值