
ISBN號碼
題?描述
每?本正式出版的圖書都有?個ISBN號碼之對應,ISBN碼包括9位數字、1位識別碼和3位分隔符,其規定格式如“x-xxx-xxxxx-x”,其中符號“-”是分隔符(鍵盤上的
減號),最后?位是識別碼,例如0-670-82162-4就是?個標準的ISBN碼。ISBN碼的?位數字表?書籍的出版語?,例如0代表英語;第?個分隔符“-”之后的三位數字代
表出版設,例如670代表維京出版社;第?個分隔之后的五位數字代表該書在該出版社的編號;最后?位為識別碼。
識別碼計算?法如下:
?位數字乘以1加上次位數字乘以2……以此類推,所得的結果mod11,所得的余數即為識別碼,如果余數為10,則識別碼為?寫字母X。例如ISBN號碼0-670-82162-
4中的識別碼4是這樣得到的:對067082162這9個數字,從左?右,分別乘以1,2.,……,9,再求和,即01+62+……+29=158,然后取158mod11的結果4
作為識別碼。
你的任務是編寫程序判斷輸?的ISBN號碼中識別碼是否正確,如果正確,則僅輸出“Right”;如果錯誤,則輸出你認為是正確的ISBN號碼。
輸?格式
輸?只有??,是?個字符序列,表??本書的ISBN號碼(保證輸?符合ISBN號碼的格式要求)。
輸出格式
輸出共??,假如輸?的ISBN號碼的識別碼正確,那么輸出“Right”,否則,按照規定格式,輸出正確的ISBN號碼(包括分隔符“-”)。
【輸?樣例1】
0-670-82162-4
【輸?樣例2】
0-670-82162-0
【輸出樣例1】
Right
【輸出樣例2】
0-670-82162-尖椒大腸 4
code
code1:
#include
#include
#include
#include
#include
#include
#include
usingnamespacestd;
inta[10];
intmain()
{
strings;
cin>>s;
a[0]=s[0]-'0';
a[1]=s[2]-'0';
a[2]=s[3]-'0';
a[3]=s[4]-'0';
a[4]=s[6]-'0';
a[5]=s[7]-'0';
a[6]=s[8]-'0';
a[7]=s[9]-'0';
a[8]=s[10]-'0';
a[9]=s[12]-'0';
intsum=0;
for(inti=0,j=1;i<9;i++,j++)
{
sum+=a[i]*j;
}
intcode=sum%11;
charc=code==10?'X':'0'+code;
if(s[12]==c)
{
cout<<"Right"<
}el
{
s[12]=c;
cout<
}
return0;
}
code2:
#include
#include
#include
#include
usingnamespacestd;
intmain(){
stringstr1;
intlen=13;
intz,i,sum,now;
sum=0;
now=0;
z=0;
cin>>str1;
for(i=0;i
if(str1[i形容人的句子 ]!='-'){
now=str1[i]-'0';
z++;
if(i!=len-1)sum=sum+z*now;
}
}
if(反思報告 str1[len-1]=='X')now=10;
elnow=str1[len-1]-'0';
if(sum%11=鐵杵成針的故事 =now)
cout<<"Right"<
el{
sum=sum%11;
for(i=0;i
cout<
if(sum!=10)
cout<
elcout<<"X"<
}
return0;
}
code3:
vector
vector
vector
intspecial=0,i,j,k;
charc;
k=strlen(p);
if(k<13){
cout<<"it'swrong!"<
_back('w');
returnoutput;
}
for(i=0;i<12;i++){
c=p[i];
if(c=='-')_back('-');
el{
j=c-'0';
_back(j);
_back(c);
}
}
c=p[12];
for(i=0;i<();i++)special+=input[i]*(i+1);
special=special%11;
if(special+'0'==c){
();
_back('R');
_back('i');
_back('g');
_back('h');
_back('t');
returnoutput;
}
if(special==10)_back('X');
_back(special+'0');
returnoutput;
}
code4:
/**************************************************************************紹興文理學院是幾本 **/
/*
/****************************************************************************/
#include
usingnamespacestd;
voidISBN(){
//freopen("","r",stdin);
//FILE*fp=fopen("","w");
inta[13];
charc;
charinput[14];
for(inti=0,j=0;i<10;j++){
cin>>c;
input[j]=c;
if(c!='-'){
if(c=='X')
a[i]=10;
el
a[i]=c-'0';
i++;
}
}
intsum=0;
for(inti=0;i<9;i++){
a[i]*=i+1;
sum+=a[i];
}
intidCode=sum%11;
if(idCode==a[9])
cout<<"Right"<
el{
for(intj=0;j<12;j++)
cout<
if(idCode==10)
cout<<"X"<
//cout<<'X'<
el
cout<
}
/*if(idCode==a[9])
fprintf(fp,"%s","Rightn");
el{
for(intj=0;j<12;j++)
fprintf(fp,"%c",input[j]);
if(idCode==10)
fprintf(fp,"%cn",'X');
el
fprintf(fp,"%dn",idCode);
}
*/
//fclo(fp);
//fclo(stdin);
}
intmain大卡車簡筆畫 (){
ISBN();
return0;
}
注意:
輸?最后?個字符可能是X
附:
ISBN的構成及新舊ISBN校驗碼的計算?法
ISBN號碼由10位數字組成,并以三條線段加以分割,每組數字都有不同的含義。
第?組:區位代碼0,1:英?2:法?3:德?4:??5:俄?7:中?
第?組:出版社代碼由各國的ISBN碼分配中?,分給各個出版社。
第三組:書序碼該出版物代碼,由出版社具體給出
第四組:計算機校驗碼只有?位,從0到10,10由X代替。
校驗碼的計算?法
1.假設某ISBN號碼前9位是:7-309-04547;
2.計算加權和S=710+39+08+97+06+45+54+43+72=226;
3.計算S11的余數M=226mod11=6;
4.計算11-M的差N=11?6=5
如果N=10,校驗碼是字母“X”;
如果N=11,校驗碼是數字“0”;
如果N為其他數字,校驗碼是數字N。
所以,本書的校驗碼是5。
ISBN中?于2004年決定在ISBN的基礎上再添加?組三位數字在最前,即將現有的10位書號前?加上“978”及重新計算稽核號,以轉換為新的13位格式。該計劃將于2007
年實施。
注釋
13位ISBN的最后?位校驗位的加權算法與10位ISBN的算法不同。具體算法是:?1分別乘ISBN的前12位中的奇數位,?3乘以偶數位,成績之和以10為模,?10減去此模,
即可得到校驗位的值,其值范圍應該為0-9。
1.假設某13位ISBN號碼前12位是:987-7-309-04547;
2.位置為123-4-567難忘的事作文400字 -89(10)(11)(12)
3.計算加權和S=91+83+71+73+31+03+91+03+41+53+41+73=117;
4.計算S10的余數M=117mod10=7;
5.計算10-M的差N=10?7=3(如果10-M的值為10則校驗碼取0)
6.所以,本書的13位ISBN的校驗碼是3。
from:
/pipisorry/article/details/38959031
ref:
ISBN的構成及新舊ISBN校驗碼的計算?法/s/blog_
ISBN編號問題
/link?url=qmrPPsRjENp5vUNG-wfwdYYG20lCqr3oC5-jLgfVLksVCopMgIcnONlXmI56p8aHJ3L0W94gWD5o3MfMD0vi9TkC5rMyzT6pSqsv-rqQXcm
本文發布于:2023-03-19 01:45:55,感謝您對本站的認可!
本文鏈接:http://m.newhan.cn/zhishi/a/1679161555148899.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:什么是isbn.doc
本文 PDF 下載地址:什么是isbn.pdf
| 留言與評論(共有 0 條評論) |