ISBN号码
2023-07-24 09:41:45
发布于:广东
40阅读
0回复
0点赞
这个题非常简单,直接上代码。
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
cin>>s;
int len=s.length();
int a[len-1],idx=0;
for(int i=0;i<len;++i)
{
if(s[i]>='0' && s[i]<='9')
{
a[idx]=int(s[i]-48);
idx++;
}
}
int cnt=0;
for(int i=0;i<9;i++)
cnt+=(a[i]*(i+1));
int isbn=cnt%11;
if(isbn==10 && s[len-1]=='X')
{
cout<<"Right";
return 0;
}
else if(isbn==s[len-1]) cout<<"Right";
if(isbn==int(s[len-1])-48) cout<<"Right"<<endl;
else
{
if(isbn==10) s[len-1]='X';
else s[len-1]=char(isbn+48);
cout<<s;
}
}
思路:
首先用string类型的字符串输入ISBN码,然后遍历得到cnt,再用cnt模上11,得到实际上的最后一位的号码。然后就是判断:
1.如果实际上的最后一位=10 且 输入的最后一位为X 输出“Right”;
2.如果实际上的最后一位=输入的最后一位输出“Right”;
3.如果不相等,替换。
而替换也有两种情况:
1.实际上的最后一位为数字,替换为数字;
2.实际上的最后一位为10,替换为X;
这里空空如也
有帮助,赞一个