xīn磊 @ 2021-10-01 21:05:52
#include<bits/stdc++.h>
using namespace std;
char ISBN[12],last;
int k=0,sum=0;
int main()
{
cin>>ISBN;//scanf("%s",ISBN);
for(int i=0;i<=12;i++)
{
if(ISBN[i]!='-')
{
k++;//计数器 123456......
sum+=k*(ISBN[i]-'0');//把字符转化成数字
}
}
sum%=11;
if(sum==10)
last='X';
else
last=sum+'0';//把数字转换为字符
if(last==ISBN[12])
cout<<"Right"<<endl;//printf("Right\n");
else
{
ISBN[12]=last;
cout<<ISBN;//printf("%s\n",ISBN);
}
return 0;
}
by mengtian_ @ 2021-10-03 09:51:13
#include<bits/stdc++.h>
using namespace std;
char ISBN[12],last;
int k=0,sum=0,i;
int main()
{
cin>>ISBN;//scanf("%s",ISBN);
i=ISBN[12];
for(int i=0;i<12;i++)
{
if(ISBN[i]!='-')
{
k++;//计数器 123456......
sum+=k*(ISBN[i]-'0');//把字符转化成数字
}
}
//cout<<sum<<endl;
sum%=11;
if(sum==10)
last='X';
else
last=sum+'0';//把数字转换为字符
if(last==i)
cout<<"Right"<<endl;//printf("Right\n");
else
{
ISBN[i]=last;
cout<<ISBN;//printf("%s\n",ISBN);
}
return 0;
}
我不会告诉你我改了一个小时
在第九行的for循环里的循环应改小于12,否则检验码也算上了。
必须要用一个变量来保存检验码的值,不然的话检验码的值到后面就会改变。