CCF真题 ISBN号码 题解
问题描述
每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码。
识别码的计算方法如下:
首位数字乘以1加上次位数字乘以2……以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。例如ISBN号码0-670-82162-4中的识别码4是这样得到的:对067082162这9个数字,从左至右,分别乘以1,2,…,9,再求和,即0×1+6×2+……+2×9=158,然后取158 mod 11的结果4作为识别码。
编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出“Right”;如果错误,则输出是正确的ISBN号码。
输入格式
输入只有一行,是一个字符序列,表示一本书的ISBN号码(保证输入符合ISBN号码的格式要求)。
输出格式
输出一行,假如输入的ISBN号码的识别码正确,那么输出“Right”,否则,按照规定的格式,输出正确的ISBN号码(包括分隔符“-”)。
样例输入
0-670-82162-4
样例输出
Right
样例输入
0-670-82162-0
样例输出
0-670-82162-4
题解:
这道题很简单,用来复习巩固下字符串和用int操作
方法一直接读取字符串
方法二用Int型读取的
Code:方法一
#include <iostream>
#include <fstream>
#include <string>using namespace std;int main(){
// fstream cin("a.txt");string s;char seq[10], chknum;int len,weight = 1,sum = 0;cin>>s;len = s.length();for(int i = 0; i < len - 2; ++i){if(s[i] == '-') continue;sum += (s[i] - '0') * (weight++);}if(sum % 11 == 10){chknum = 'X';}else{chknum = sum % 11 + '0';}if(chknum == s[len - 1]) cout<<"Right"<<endl;else{for (int i = 0; i < len - 1; ++i){cout<<s[i];}cout<<chknum<<endl;}return 0;
}
Code:方法二
#include <iostream>
#include <fstream>using namespace std;int main(){
// fstream cin("a.txt");int n1,n2,n5,sum = 0;char chknum;int seq[10],cur;char c = '-';cin>>n1>>c>>n2>>c>>n5>>c>>chknum;seq[0] = n1;cur = 3;while(n2 > 0){seq[cur--] = n2 % 10;n2 /= 10;}cur = 8;while(n5 > 0){seq[cur--] = n5 % 10;n5 /= 10;}for(int i = 0; i < 9; ++i){sum += seq[i] * (i + 1);}if(sum % 11 == 10 && chknum == 'X'){cout<<"Right"<<endl;return 0;}if(sum % 11 == chknum - '0') cout << "Right" << endl;else{for(int i = 0; i < 9; ++i){cout<<seq[i];if(i == 0) cout << "-";if(i == 3) cout << "-";if(i == 8) cout << "-";}if(sum % 11 == 10) cout << "X";else cout << sum % 11 << endl;}return 0;
}
CCF真题 ISBN号码 题解相关推荐
- CCF真题 201312-2 ISBN号码
目录 1 题目 1.1 问题描述 1.2 输出格式 1.3 样例输入 1.4 样例输出 1.5 样例输入 1.6 样例输出 2 代码 1 题目 1.1 问题描述 每一本正式出版的图书都有一个ISBN号 ...
- CCF真题之ISBN号码
201312-2 问题描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符,其规定格式如"x-xxx-xxxxx-x",其中符号& ...
- C++ 字符串流stringstream(附蓝桥杯2018年第九届真题缩位求和题解)
一.stringstream介绍 stringstream是 C++ 提供的一个字符串流(stream),,必须包含其头文件: #include <sstream> < sstrea ...
- 团体程序设计天梯赛真题(部分题解,持续更新)
文章目录 天梯赛真题 L1-008 求整数段和(10分) 输入格式: 输出格式: 输入样例: 输出样例: 解题过程: L1-018 大笨钟(10分) 输入格式: 输出格式: 输入样例1: 输出样例1: ...
- 数据结构——CCF真题:疲劳度问题
2017.12.3CCF真题第四题 一.问题: 0.问题描述 小明和小芳出去乡村玩,小明负责开车,小芳来导航. 小芳将可能的道路分为大道和小道.大道比较好走,每走1公里小明会增加1的疲劳度.小道不好走 ...
- ccf试题棋局评估c语言,第十三次CCF CSP认证(2018年3月)真题棋局评估 题解
问题描述 Alice和Bob正在玩井字棋游戏. 井字棋游戏的规则很简单:两人轮流往3*3的棋盘中放棋子,Alice放的是"X",Bob放的是"O",Alice执 ...
- CCF真题 工资计算
测试网址:https://passport.ccf.org.cn/sso/platform 注册后->CSP认证->报名考试->模拟考试 Description 小明的公司每个月给小 ...
- 14年12月CCF真题1-门禁系统
问题描述 涛涛最近要负责图书馆的管理工作,需要记录下每天读者的到访情况.每 位读者有一个编号,每条记录用读者的编号来表示.给出读者的来访记录,请 问每一条记录中的读者是第几次出现. 输入格式 输入的第 ...
- 14年12月CCF真题4-最优灌溉
问题描述 雷雷承包了很多片麦田,为了灌溉这些麦田,雷雷在第一个麦田挖了一口 很深的水井,所有的麦田都从这口井来引水灌溉. 为了灌溉,雷雷需要建立一些水渠,以连接水井和麦田,雷雷也可以利用 部分麦田作为 ...
最新文章
- elif在python中啥意思_python中elif 结构语句怎么判断?
- jquery mobile 移动web(5)
- python货币转化为资本的前提_深度剖析比特币背后的技术细节
- layui 动态添加的表单元素--select
- java treeset 降序,Java TreeSet,Collections使用
- java 实现ukey身份认证_一种基于ukey认证的单点登录实现方法与流程
- 查看solaris系统的版本和位数
- 通达OA2015版与金蝶K3系统集成方案
- linux filesystem not open,LVM 'Can’t open /dev/sdb1 exclusively. Mounted filesystem?' Problem
- html中footer怎么写,HTML DOM Footer用法及代码示例
- 职场拓展人脉的老派艺术
- 经济基础知识(初级)【15】
- win10 游戏全屏闪退桌面解决方法
- 墨刀原型设计工具101
- 基于Springboot的智慧校园管理系统(PC端和APP端双端应用)
- 机器视觉技术在水下机器人中的应用研究展望
- 如何最好的实现数据治理?数据治理的有效手段介绍
- 智能卡操作系统(COS)简介
- 一文搞懂tiktok运营视频策划,从数据分析到运营策略
- 深入浅出5g移动通信 ppt课件_最新!光华信通、迅特通信、烽火通信三家公司中标移动5G项目!...
热门文章
- python ASF API下载Sentine-1数据
- Java虚拟机学习笔记整理
- Lesson 16 Mary had a little lamb 内容鉴赏
- js中常用到的一些解决问题方法(整理一些真正有效能够使用到项目中的方法)(等待不断更新积累)
- https://blog.csdn.net/codezjx/article/details/8872090
- @Before,@After和@BeforeClass和@AfterClass的区别
- 北京电台“广播三下乡” 徐德亮演唱传统曲艺
- 三羊献瑞-第六届蓝桥杯省赛
- 思杰pvs服务器压力无法最大化,XXX学校桌面虚拟化方案重点.docx
- 在ArcGIS Pro2.2中玩转聚焦地图