zhangtianxin2013 @ 2024-04-10 20:46:47
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b,c,d,e,f,g,h,i,s1,s2=0;
char j;
scanf("%1d-%1d%1d%1d-%1d%1d%1d%1d%1d-%c"&a,&b,&c,&d,&e,&f,&g,&h,&i,&j);
s1=(a*1+b*2+c*3+d*4+e*5+f*6+g*7+h*8+i*9)%11;
if(j=='X') s2=10;
else s2=j-'0';
if(s1==s2)
cout<<"Right";
else if(s1==10)
cout<<a<<"-"<<b<<c<<d<<"-"<<e<<f<<g<<h<<i<<"-X";
else
cout<<a<<"-"<<b<<c<<d<<"-"<<e<<f<<g<<h<<i<<"-"<<s1;
}
by zhangtianxin2013 @ 2024-04-10 20:47:25
必回关
by Shui_mo @ 2024-04-10 20:51:49
首先定义一个字符c,代表最后一位识别码。
charAt(i)方法是指去字符串中制定位置的字符,i从0开始
这里要注意的是:由于字符存储到内存中是存储字符的ASCII码,例如字符‘0’的ASCII码是48,ASCII与数字字符本身代表的值的转换关系是:数字字符-‘0’的ASCII=数字字符本身代表的值
例如:‘1’是个数字字符,字符‘1’的ASCII是49,所以1=49-48
所以数字字符要做算术运算,需要先将其转换成数字本身的值,转换规则就是字符-‘0’ 或者 字符的ASCII码-‘0’的ASCII
by Shui_mo @ 2024-04-10 20:52:37
要java的方法还是c++啊
by Shui_mo @ 2024-04-10 20:53:29
#include<iostream>
#include<string>
using namespace std;
int main()
{
string isbncode;
int mathcode[13]={0},realcode=0;
long int mycode=0;
cin>>isbncode;//输入ISBN号
for(int i=0;i<=12;i++)//转换为数字
{
mathcode[i]=isbncode[i]-'0'; //字符转换为数字
}
mycode=mathcode[0]*1+mathcode[2]*2+mathcode[3]*3+mathcode[4]*4+mathcode[6]*5+mathcode[7]*6+mathcode[8]*7+mathcode[9]*8+mathcode[10]*9;
mycode=mycode%11;//求出正确的识别码
if (mycode==10)
{
mycode='X'-'0';
}
if(mycode==mathcode[12])//如果正确
cout<<"Right";//注意第一个字母大写,和题目要求一致
else
{
//用一一对应的方式输出
cout<<mathcode[0]<<'-'
<<mathcode[2]<<mathcode[3]<<mathcode[4]<<'-'
<<mathcode[6]<<mathcode[7]<<mathcode[8]<<mathcode[9]<<mathcode[10]
<<'-'<<char(mycode+'0');//用char函数强制转换为字符类型
}
return 0;
}
by zhangtianxin2013 @ 2024-04-10 20:54:44
@Shui_mo 谢谢