文章

28

粉丝

0

获赞

99

访问

3.7k

头像
ISBN号码识别 题解:刚开始给你带ISBN编码可能最后一位为X要进行判断。
P2000 云南大学机试题
发布于2025年3月19日 16:00
阅读数 80

 

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main(){
  4. string s;
  5. cin>>s;
  6. int n=9;
  7. int total=0;
  8. total=(s[0]-'0')*1+(s[2]-'0')*2+(s[3]-'0')*3+(s[4]-'0')*4+(s[6]-'0')*5+(s[7]-'0')*6+(s[8]-'0')*7+(s[9]-'0')*8+(s[10]-'0')*9;
  9. if(total%11==(s[12]-'0')||(total%11==10 && s[12]=='X')){ //注意刚开始给的ISBN编码最后一位可能为X.
  10. cout<<"Right";
  11. return 0;
  12. }
  13. //}else
  14. //{
  15. //for(int i=0;i<9;i++){
  16. //total=init;
  17. //total=total-(s[10]-'0')*9+i*9;
  18. //if(total%11==(s[12]-'0'))
  19. //{
  20. // char ch=i+'0'; //i+'0'从整型变为字符型;-的话则相反;
  21. // s[10]=ch;
  22. // cout<<s;
  23. // return 0;
  24. //}
  25. //}读懂题目很重要!!!!!!不能自己绕自己。!!!!
  26. //}上述注释部分为刚开始理解错误,以为要进行的ISBN是要从前面的数字进行更改,而不是校验位。
  27. if(total%11==10)
  28. {
  29. s[12]='X';
  30. cout<<s;
  31. }else{
  32. int i=total%11;
  33. char ch=i+'0';
  34. s[12]=ch;
  35. cout<<s;
  36. }
  37. return 0;
  38. }

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发