蓝桥杯练习题-图书ISBN号码

题目:每—本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xXX-XXXxx-x”,其中符号"-"是分隔符(键盘上的减号),最后—位是识别码,例如O-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如О代表英语;第—个分隔符“-"之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后—位为识别码。

识别码的计算方法如下:

首位数字乘以1加上次位数字乘以2......以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母×。例如ISBN号码0-670-82162-4中的识别码4是这样得到的:对067082162这9个数字,从左至右,分别乘以1,2,...,9,再求和,即O×1+6×2+......+2×9=158,然后取158 mod 11的结果4作为识别码。你的任务是编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出Right;如果错误,则输出你认为是正确的ISBN号码。

实现思路:

1.首先,通过Scanner类从控制台读取用户输入的ISBN号。
2.去除出版编号中的所有“_”。
3.初始化一个累加器sum为0。
4.使用for循环遍历ISBN号中的每个数字字符,除了最后一个字符。将每个数字字符转换为整数,乘以一个递增的k(从1开始),然后将结果加到sum中。
5.根据sum的值计算校验码。如果sum除以11的余数是10,校验码是"X";否则,校验码是sum除以11的余数。
6.获取原始的校验码,即ISBN号中的最后一个字符。
7.如果计算出的校验码与原始校验码相同,则输出"Right",表示ISBN号有效。
8.如果不同,则输出修正后的ISBN号(原始字符串除了最后一个字符之外的所有字符,加上计算出的校验码)。

package com.ztt.Demo01;import java.util.Scanner;
public class demo02 {public static void main(String[] args) {try(Scanner in = new Scanner(System.in)){String isbn=in.nextLine();//去除出版编号中的所有“_”String isbnNumberStr = isbn.replace("-", "");//遍历除数校验码(最后一位)以外的所有字符int sum=0;for(int i=0,k=1;i<isbnNumberStr.length()-1;i++,k++) {int n=Integer.parseInt(String.valueOf(isbnNumberStr.charAt(i)));//将字符转换为字符串,获取字符串isbnNumberStr中的第i个字符,将字符串转换为整数。sum += n * k;}System.out.println(sum);//根据累加值,计算校验码String validateCode = String.valueOf(sum % 11==10 ? "X" :sum % 11);//获取原始的校验码String last=String.valueOf(isbnNumberStr.charAt(isbnNumberStr.length()-1));if(validateCode.equals(last)) {System.out.println("Right");}else {System.out.println(isbn.substring(0,isbn.length()-1) + validateCode);}}}}

运行结果:

0-670-82162-4
158
Right

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/656912.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Cesium】在着色器中计算片元的高程

问题提出 有时候在 Cesium 上做一些效果时&#xff0c;需要知道片元的高程。而渲染是基于笛卡尔坐标的&#xff0c;没有高程这个概念。怎么在着色器中计算片元的高程呢&#xff1f; 基本思路 通常做法是在着色器里对深度纹理采样&#xff0c;将片元的深度值转换为相机坐标。…

一片带你熟练Git分支管理

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 目录 1.理解分支2.创建分支…

如何快速记忆小鹤双拼键位图?

记忆方法&#xff1a;韵母表 图形 最常用字 韵母表&#xff1a;双拼的基础 图形&#xff1a;帮助新手快速联想回忆 最常用字&#xff1a;快速打字基础 一、单韵母&#xff08;紫色方块&#xff09; 一一对应如下表&#xff1a; 单韵母aoeiu、AOEIV 二、复韵母—箭矢型&am…

javaScript删除对象属性总结方法

在JavaScript中&#xff0c;可以使用以下几种方法来删除对象的属性&#xff1a; 1、使用delete关键字 使用delete关键字可以从对象中删除指定的属性。示例代码如下&#xff1a; var obj {name: "John",age: 30,city: "New York" };console.log(obj); /…

几种常见编码器优缺点

目录 光电编码器 磁性编码器 编码器在运动控制类产品中比较常见&#xff0c;旋转编码器都是组成运动控制反馈回路的关键元器件&#xff0c;包括工业自动化设备和过程控制、机器人技术、医疗设备、能源、航空航天等。 作为将机械运动转换为电信号的器件&#xff0c;编码器可为…

ASP.NET Core 使用 SignalR 的简单示例

写在前面 ASP.NET SignalR 是一个开源代码库&#xff0c;简化了Web实时通讯方案&#xff0c;可以实时地通过服务端将信息同步推送到各个客户端&#xff0c;可应用于 需要从服务器进行高频更新的应用&#xff1a;包括游戏、社交网络、投票、拍卖、地图和GPS应用&#xff1b; 仪…

Linux命令-aptitude命令(Debian Linux系统中软件包管理工具)

补充说明 aptitude命令 与apt-get命令一样&#xff0c;都是Debian Linux及其衍生系统中功能极其强大的包管理工 具。与apt-get不同的是&#xff0c;aptitude在处理依赖问题上更佳一些。举例来说&#xff0c;aptitude在删除一个 包时&#xff0c;会同时删除本身所依赖的包。这样…

excel中去掉单元格中两个数字之间的空格

excel中去掉单元格中两个数字之间的空格 使用公式&#xff1a;SUBSTITUTE(A1," “,”") 解释&#xff1a;将A1单元格中的空格查找出来并去掉。

python_蓝桥杯刷题记录_笔记_入门2

前言 现在正式进入蓝桥杯的刷题啦&#xff0c;用python来做算法题&#xff0c;因为我之前其实都是用C来做题的&#xff0c;但是今年的话我打算换python来试试&#xff0c;很明显因为也才这学期接触python 加上之前C做题也比较菜&#xff0c;所以我打算用python重新来做题&#…

Nginx 部署指定文件夹下的项目(本地测试)

1、配置 vue.config.js&#xff0c;指定生成环境的包 //部署生产环境和开发环境下的URLpublicPath: process.env.NODE_ENV production ? "/marketing" : "/",///npm run build 或 varn build 生成文件的日录名称(要利baseUrl的牛产环境路一致)(默认dist…

STL之stack 【栈】

STL之stack 【栈】 头文件创建stack添加元素(插入元素)删除元素&#xff08;弹出元素&#xff09;访问元素检查栈是否为空&#xff1a;获取栈的大小遍历C中stack用c语言实现栈 stack&#xff1a;栈&#xff0c;后进先出&#xff08;LIFO&#xff09;的数据结构。适用于需要在容…

每日一言正能量句子,心灵鸡汤之励志文案

1、相信自我是成功的基石&#xff0c;完善自我是成功的阶梯&#xff0c;突破自我是成功的钥匙&#xff0c;合谋共处是成功的翅膀&#xff0c;确立目标是成功的起点&#xff0c;付注行动是成功的号角&#xff01; 2、所有的努力&#xff0c;不是为了让别人觉得你了不起&#xf…

Modern C++ sizeof(std::tuple)的秘密

1. 前言 我们曾经至少三篇帖子或多或少的提到过std::tuple的原理及占用空间大小: Modern C++ std::tuple的sizeModern C++利用工具快速理解std::tuple的实现原理GDB调试技巧实战–自动化画出类关系图Modern C++ std::unique_ptr的实现原理但是,当初在第一篇中提出的size的问…

【INTEL(ALTERA)】错误:*.onchip_flash_0:UFM 扇区不支持“隐藏”模式。请更新访问模式设置

说明 由于英特尔 Quartus Prime Standard Edition 软件版本 22.1 存在一个问题&#xff0c;当您针对 10 FPGA Compact 变体英特尔 MAX在片上闪存英特尔 FPGA IP中选择单压缩映像配置模式时&#xff0c;可能会出现以下错误消息。 错误&#xff1a;*.onchip_flash_0&#xff1a…

C系列-自定义类型:结构体

&#x1f308;个人主页: 会编程的果子君 ​&#x1f4ab;个人格言:“成为自己未来的主人~” 结构体类型的声明 前面我们在学习操作符的时候&#xff0c;已经学习了结构体的知识&#xff0c;这里我们稍微复习一下。 结构体回顾 结构是一些值的集合&#xff0c;这些值称为成员…

【字节跳动】资深后端开发工程师-平台应用服务

资深后端开发工程师-平台应用服务 上海&#xff5c;正式&#xff5c;研发 - 后端职位&#xff5c;ID&#xff1a;A04493 职位描述 负责商业化基础服务系统能力建设&#xff0c;参与千亿级广告基础数据服务研发和优化&#xff0c;参与广告平台通用组件的设计和实现&#xff1b…

【linux】磁盘相关命令fdisk/lsblk和file

1. fdisk 磁盘分区&#xff0c;查看系统分区。 fdisk 的意思是 固定磁盘(Fixed Disk) 或 格式化磁盘(Format Disk)&#xff0c;它是命令行下允许用户对分区进行查看、创建、调整大小、删除、移动和复制的工具。它支持 MBR、Sun、SGI、BSD 分区表&#xff0c;但是它不支持 GUI…

Docker 数据管理、容器互联、网络与资源控制

一、docker数据管理 管理 Docker 容器中数据主要有两种方式&#xff1a;数据卷(Data volumes)和数据卷容器(Datavolumes containers)。 1、数据卷 数据卷是一个供容器使用的特殊目录&#xff0c;位于容器中。可将宿主机的目录挂载到数据卷上&#xff0c;对数据卷的修改操作立…

池化设计之数据库连接池

前言 一般数据库操作、主机操作等经常会涉及到会话&#xff0c;什么是会话&#xff0c;会话在日常生活中就是指两个人或者多个人直接的交流&#xff0c;同样的在IT行业会话一般是指客户端和服务端之间的通信交流。比如数据库&#xff0c;如果使用可视化界面做为客户端和数据库…

牛顿法与拟牛顿法

文章目录 牛顿法&拟牛顿法1 牛顿法2 拟牛顿法2.1 对称秩1校正2.2 DFP2.3 BFGS 牛顿法&拟牛顿法 设无约束优化问题&#xff1a; min ⁡ f ( x ) , x ∈ R n \min f(x),{\kern 1pt} \,x \in {R^n} minf(x),x∈Rn 1 牛顿法 基本思想&#xff0c;通过泰勒二阶展开&…