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-最优灌溉
问题描述 雷雷承包了很多片麦田,为了灌溉这些麦田,雷雷在第一个麦田挖了一口 很深的水井,所有的麦田都从这口井来引水灌溉. 为了灌溉,雷雷需要建立一些水渠,以连接水井和麦田,雷雷也可以利用 部分麦田作为 ...
最新文章
- python 读写 csv
- Node.js 开发指南笔记
- scrapy多个page爬取, post请求, 通过爬到的URL继续发请求爬页面
- 当代的设计潮流是什么_12月,潮流咖的出行攻略!
- ImportError: cannot import name ‘options‘ from ‘pyecharts‘
- 发布订阅之fanout
- 关于aop:pointcut的expression配制说明及JoinPoint
- HDFS依然是存储的王者
- 查看网卡流量:nload
- 先进pid控制matlab仿真_PID控制原理 三 (控制系统硬件选择与仿真)
- MySQL 复制技术的发展
- 区块链游戏《TmoLand明日世界》又叒叕更新了
- VOSviewer:高频关键字段共现网络制作入门教程(以PubMed数据为例)
- UIFont各种字体
- 车辆信息查询api,通过车系名称查询相关信息
- 读文万卷025期:使用MRI形态学特征和表观弥散系数预测WHO II/III级胶质瘤分子状态;帕金森病的中脑的定量磁敏感成像
- 【Linux】将终端的命令输出保存为txt文本文件
- SPI 接口OLED 使用5V 信号驱动可能需要电平转换
- java时区时间转换
- java.lang.IllegalArgumentException: Address 127.0.0.1:5672:5672 seems to contain an unquoted IPv6
热门文章
- 滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(7月29日)...
- 告别 Google 网站站长,迎接 Google 搜索中心
- 武林c语言,听风一剑
- STM32工程模板简单套用教程(Keil MDK)
- VMware低版运行高版+破解root口令+静态IP配置
- Cortex-A15 Processor 简介
- Flutter - flutter_bloc状态管理
- Linux系统之部署Rsyslog 日志服务器
- 单片机c语言关键字 id,单片机关键字sfr和sbit的理解
- java 数组越界_JAVA 数组越界 怎么破