牛客网编程题——“求IBSN码”

        这是我今天在牛客网上面刷题看到的一道相对而言比较有价值的题,个人非常的喜欢昂(因为我没有做起...),先看题目:

        每一本正式出版的图书都有一个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号码。

        比如:

        输入:0-670-82162-4 输出:Right

        输入:0-670-82162-0 输出:0-670-82162-4

        本题有几个难点,首先,得创造一个数组来存储这些“IBSN码”,得需要一个字符数组,因为这里面不但有数字,也有字符‘-’,然后得知道,乘数字的时候,千万不能将-也乘进去了,因为‘-’是有ASCII码值的,所以说不能将‘-’也一并乘进去,所以说我们在乘的时候遇到‘-’就要跳过,最后将得到的数来比较,但是还有一件事,我们需要将错误的码改正确,看起来很复杂,我以为也很复杂,但其实想想根本不复杂——只需要将前12个打出来,然后将得数再打出来就好了;并且,假如最后得数是10,打印一个x就好了,相当于没有去改值,我们只需要先输入前12个,然后再自己输入一个就好了。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{char arr[13];   //存放13位的ISBNint i, j;scanf("%s", arr);int s = 0;for (i = 0, j = 1; i < 11; i++){if (arr[i] != '-'){s += (arr[i] - '0') * j;    //将字符换成int累加:0×1+6×2+……+2×9=158j++;  //执行if的时候加,不执行不加}}int m = s % 11;  //最后一位识别码if (m == arr[12] - '0' || (m == 10 && arr[12] == 'X')){printf("Right\n");}else{if (m == 10){for (i = 0; i < 12; i++)  //输出前12位{printf("%c", arr[i]);}printf("X");}else {for (i = 0; i < 12; i++)//输出前12位{printf("%c", arr[i]);}printf("%d", m);}}
}

        

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

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

相关文章

看了致远OA的表单设计后的思考

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; https://gitee.com/nbacheng/n…

通信原理期末复习——计算大题(一)

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的在校大学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755qq.com &#x1f989;个人WeChat&#xff1a;V…

Linux操作系统基础(13):文件管理-文件目录命令

1. 文件操作 1.1. 创建文件和目录 touch命令用于创建新的空文件或更新现有文件的时间戳。 #1.创建一个test.txt文件 touch test.txt#2.创建多个文件&#xff08;test1.txt、test2.txt、test3.txt&#xff09; touch test{1..3}.txtmkdir命令用于创建一个新的目录&#xff08…

最小覆盖子串【子串】【滑动窗口】【哈希】

Problem: 76. 最小覆盖子串 文章目录 思路 & 解题方法复杂度Code 思路 & 解题方法 窗口左右边界为i和j&#xff0c;初始值都为0&#xff0c;j一直往右搜索&#xff0c;然后记录一下窗口内的字符是否达到了全部覆盖&#xff0c;如果达到了&#xff0c;那么就开始i往右搜…

交换机04_远程连接

通过远程管理方式连接交换机 1、telnet简介 telnet 是应用层协议 基于传输层TCP协议的&#xff0c;默认端口&#xff1a;23 采用的是明文密码方式 不是很安全&#xff0c;一般用于内网管理。 2、ssh协议简介 ssh 是应用层的协议&#xff0c;基于传输层的TCP协议&#x…

打造清晰的日志管理策略:如何在 NestJS 中集成 winston 高级日志系统

前言 在Web应用程序的开发过程中&#xff0c;日志管理是不可或缺的一部分。日志可以帮助我们了解应用程序的运行状态&#xff0c;监控系统行为&#xff0c;以及在出现问题时快速定位和解决问题。 对于使用NestJS框架的项目来说&#xff0c;集成一个高效、可扩展的日志系统尤为…

面试官:说说接口和抽象类有什么区别

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一波电子书籍资料&#xff0c;包含《Effective Java中文版 第2版》《深入JAVA虚拟机》&#xff0c;《重构改善既有代码设计》&#xff0c;《MySQL高性能-第3版》&…

高密集型数据服务--第2章 数据模型与查询语言

一、引言 数据模型可能是开发软件最重要的部分,而且还对如何思考待解决的问题都有深远的影响。 大多数应用程序是通过一层一层叠加数据模型来构建的。每一层都面临的关键问题是&#xff1a;如何将其用下一层来表示&#xff1f; 1.作为一名应用程序开发人员&#xff0c;观测现实…

Python中的cls语法

在Python中&#xff0c;cls 是一个用于指代类本身的约定性名称&#xff0c;通常用作类方法&#xff08;class method&#xff09;中的第一个参数。cls 类似于 self&#xff0c;它是对类的引用&#xff0c;而不是对实例的引用。cls 通常在类方法中用于访问类级别的属性和方法。举…

kafka处理大量消息积压tips —— 筑梦之路

一、consumer导致kafka积压了大量消息 场景&#xff1a; 1. 如果是Kafka消费能力不足&#xff0c;则可以考虑增加 topic 的 partition 的个数&#xff0c; 同时提升消费者组的消费者数量&#xff0c;消费数 分区数 &#xff08;二者缺一不可&#xff09; 2. 若是下游数据处理…

cookie和session的区别

cookie和session主要有以下区别&#xff1a; 1. 存放的位置&#xff1a; cookie: 浏览器端 session: 服务器端 2. 安全性&#xff1a; cookie是以明文的方式存放在客户端的&#xff0c;安全性相对较低 session存放于服务器中&#xff0c;所以安全性相对较好 3. 网络传输量…

LeetCode 28 找出字符串中第一个匹配项的下标

题目描述 找出字符串中第一个匹配项的下标 给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。如果 needle 不是 haystack 的一部分&#xff0c;则返回 -1 。 示例 1&…

LLM Agent之数据分析领域的应用

数据分析&#xff1a;Data-Copilot paper: Data-Copilot: Bridging Billions of Data and Humans with Autonomous Workflow github: https://github.com/zwq2018/Data-Copilot 先介绍下浙大提出的已扩展的数据分析框架&#xff0c;支持多种金融数据类型的查询&#xff0c;数…

Vue3-40-路由- 动态路由

说明 本文主要介绍了 对路由的动态配置&#xff0c;主要包括以下几个部分&#xff1a;1、判断某个路由是否存在&#xff1b;2、查看路由对象中的所有路由配置&#xff1b;3、添加一个路由&#xff1b;4、删除一个路由。针对上述四个方面&#xff0c;vue-router 中提供了对应的…

论文笔记 Understanding Electricity-Theft Behavior via Multi-Source Data

WWW 2020 oral 1 INTRO 1.1 背景 1.1.1 窃电 窃电&#xff08;electricity theft&#xff09;指用户为了逃避电费而进行非法操作的一种行为 常用的反窃电方法可分为两类&#xff1a; 基于硬件驱动的反窃电方法 ​​​​​​​电表开盖检测、集中器检测。。。。 硬件驱动的…

MySQL之视图案例

目录 一.视图1.1 含义1.2 操作 二.案例三.思维导图 一.视图 1.1 含义 虚拟表&#xff0c;和普通表一样使用 1.2 操作 1.创建视图 create view 视图名 as 查询语句&#xff1b; 2.视图的修改 方式一&#xff1a; create or replace view 视图名 as 查询语句 方式二&#x…

图像分割-Grabcut法(C#)

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 本文的VB版本请访问&#xff1a;图像分割-Grabcut法-CSDN博客 GrabCut是一种基于图像分割的技术&#xff0c;它可以用于将图像中的…

Linux第15步_安装FTP客户端

安装完FTP服务器后&#xff0c;还需要安装FTP客户端&#xff0c;才可以实现Ubuntu系统和Windows系统进行文件互传。 1、在STM32MP157开发板A盘基础资料\03软件中&#xff0c;找到“FileZilla_3.51.0_win64-setup.exe”&#xff0c;双击它&#xff0c;就可以安装。 2、点击“I …

第5章-第8节-Java面向对象中的内部类

1、内部类&#xff1a;属于类的成员之一&#xff0c;类的内部又定义类&#xff0c;外层的class称为外部类&#xff0c;内部的class称为内部类。 设计了某个类&#xff0c;根据需求发现其内部又需要定义一个独立的内部结构&#xff0c;此时就考虑将其定义为内部类&#xff0c;内…

docker 相关常用命令---持续更新

注意&#xff0c;如果命令从文档复制过来在执行总是失败&#xff0c;然后又确定自己的命令没有错&#xff0c;那就自己手工敲命令&#xff0c;有的命令内容复制就是不行&#xff0c;手工敲就没问题了。 #查看容器站点运行日志 --tail500 查看500行&#xff0c; 后面的是容器…