我的代码
#include<iostream>
using namespace std;
int main()
{
string s;
cin>>s;
int sum=0,n=0;
for(int i=0;i<s.length()-2;i++)
if(s[i]!='-')
{
n++;
sum+=(s[i]-'0')*n;
}
if(sum%11==10&&s[(s.length()-1)]=='X')cout<<"Right";
else if(sum%11==(s[(s.length()-1)]-'0'))cout<<"Right";
else
{
s.erase(s.length()-1,1);//删除最后一位;
if(sum%11==10)cout<<s<<"X";
else cout<<s<<sum%11;
}
return 0;
}
思路比较简单 直接对各种情况判断处理即可
但写的时候对于字符串元素删除操作我有点模糊 所以将它特别记录下来提醒自己:
s.erase(x,y) -----从下标x开始连续删除y个元素
本文介绍了一个C++程序,用于验证ISBN号码的正确性并自动修复错误的ISBN号码。程序通过计算ISBN前几位数字的加权和,并对比末位校验码进行校验。若校验失败,程序会尝试修正并输出正确的ISBN号码。

721

被折叠的 条评论
为什么被折叠?



