字符串的简单处理

news2024/11/19 13:28:19
第1题     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号码(包括分隔符“-”)。

输入/输出例子1

输入:

0-670-82162-4

输出:

Right

输入/输出例子2

输入:

0-670-82162-0

输出:

0-670-82162-4

#include<bits/stdc++.h>
using namespace std;
char mod[12]="0123456789X";
int main(){
    char s[14];
    for(int i=0;i<=12;i++)
    cin>>s[i];
    int k=1,sum=0;
    for(int i=0;i<12;i++){
        if(s[i]!='-'){
            sum+=(s[i]-'0')*k;
            k++;
        }
    }
    if(mod[sum%11]==s[12])cout<<"Right";
    else {   
        s[12]=mod[sum%11];
        cout<<s;
    }
        

    return 0;
}
第2题     十六进制 查看测评数据信息

输入一个十六进制的数,如果输入的不是十六进制,则输出NO,否则输出对应的十进制值。

输入格式

只有一个字符串(字符串长度≤6)。

输出格式

符合十六进制就输出对应的十进制数,否则输出NO。

输入/输出例子1

输入:

1A2b

输出:

6699

#include<bits/stdc++.h>
using namespace std;
const int N=100002;
char c[N];
int main()
{
	cin>>c;
	for(int i=0;i<strlen(c);i++)
		if((c[i]>='0'&&c[i]<='9')||(c[i]>='A'&&c[i]<='F')||(c[i]>='a'&&c[i]<='f')) continue;
		else{
			cout<<"NO";
			return 0;
		}
	long long sum=0,num,wq=1;
	for(int i=strlen(c)-1;i>=0;i--){
		if(c[i]>='0'&&c[i]<='9')num=c[i]-'0';
		else switch(c[i]){
			case 'A':case 'a':num=10;break;
			case 'B':case 'b':num=11;break;
			case 'C':case 'c':num=12;break;
			case 'D':case 'd':num=13;break;
			case 'E':case 'e':num=14;break;
			case 'F':case 'f':num=15;break;
		}
		sum+=num*wq;
		wq*=16;
	}
	cout<<sum<<endl;
}
第3题     电文加密 查看测评数据信息

在军事上,通讯的工具往往是收发电文,但敌方会利用仪器设备接收到电文,所以为了使电文保密,可以按一定的规律将电文转换成密码再发送,收报人再按约定的规律将其译回原文,现按这样的规律加密英文电文:将26个英文字母按顺时针围成一圈,把要发送的英文字母转变成其后的第N(1≤N≤25)个字母(除英文字母外,电文中的其它字符不用加密)。例如:如图1,把大写字母A转变成其后的第3个字母是D,把大写字母Y转变成其后的第3个字母是B,小写字母的加密方法也一样,如把b转变成其后的第3个字母是e,把y转变成其后的第三个字母是b。例如电文"1Day."按把字母转变成其后的第3个字母的方法进行加密是:"1Gdb."。

pimg1152_1.jpg

输入格式

输入数据仅1行:A$,N (A$为英文字串,N为转换为其后的第N个字母,1≤N≤25,英文字串与N之间用‘,’隔开)。

输出格式

输出数据仅1行,把英文字串A$转换为其后的第N个字母的新字串。

输入/输出例子1

输入:

Tow.,4

输出:

Xsa.

样例解释

4表示把"Tow."转变成其后的第4个字母

#include<bits/stdc++.h>
using namespace std;
string a;
int main ()
{ 
    getline(cin,a);
    int t=a. find(',')+1;
    int s=0;
    for(int i=t; i<a. size (); i++){

        s=s*10+(a[i]-'0');
        s%=26;
    }
    for(int i=0;i<t-1; i++)
    {

    if(a[i]>='a'&&a[i] <= 'z')//因为直
    for(int j=1; j <= s; j++){

    a[i]++;
    if(a[i]>'z')a[i]='a';
    }
    else if(a[i]>='A' &&a[i] <= 'Z')
        for(int j=1; j <= s; j++){

            a[i]++;
            if(a[i]>'Z')a[i]='A';
        }
    cout << a[i];
    }
    return 0;
}

第4题     纳米文 查看测评数据信息

一天,摇摇很荣幸地来到了纳米星球。可他发现一种奇怪的文字——纳米文,就研究起来了。经过不懈的努力,摇摇终于发现改怎么把纳米文转换成地球的文字了:纳米文是一串字符,然后按照下面有一个数字n,然后有n条命令,每条命令有1个或2个字符。如果只有1个字符,就把字符串中的所有这个字符去掉。如果有2个字符,就是把字符串中的所有第一个字符换成那第二个字符。现在摇摇给你纳米文,请把它转成地球文。

输入格式

输入数据共n+2行,第1行:一个字符串。

第2行,一个正整数n。

第3到n+2行,共n行命令字符。

输出格式

输出数据仅1行,即转换后的地球文。

输入/输出例子1

输入:

g31a1333g3ccl11t13hhg

7

z

1

h

c p

t e

g

3

输出:

apple

样例解释

g31a1333g3ccl11t13hhg

7

z     {去掉所有的“z”}

1     {去掉所有的“1”}

h     {去掉所有的“h”}

c p   {把所有的“c”换成“p”}

t e   {把所有的“t”换成“e”}

g     {去掉所有的“g”}

3     {去掉所有的“3”}

#include<bits/stdc++.h>
using namespace std;
int main(){
    string nano;
    int n;
    getline(cin, nano); 
    cin>>n; 
    cin.ignore(); 
    for(int i=0;i<n;i++){
        string command;
        getline(cin,command); 
        if(command.size()==1){
            size_t pos=nano.find(command);
            while(pos!=string::npos){
                nano.erase(pos,1);
                pos=nano.find(command,pos);
            }
        } 
		else if(command.size()==3){
            size_t pos=nano.find(command[0]);
            while(pos!=string::npos){
                nano[pos]=command[2]; 
                pos=nano.find(command[0], pos+1);
            }
        }
    }
    cout<<nano<<endl;
    return 0;
}
第5题     乐乐的图形 查看测评数据信息

       乐乐最近玩起了字符游戏,规则是这样的:读入若干字符串,其中的字母都是大写的,乐乐想打印一个柱状图显示每个大写字母的频率。你能帮助她吗? 

输入格式

输入文件有若干行:每行为一串字符,不超过72个字符。

输出格式

与样例的格式保持严格的一致。

输入/输出例子1

输入:

THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG.

THIS IS AN EXAMPLE TO TEST FOR YOUR

HISTOGRAM PROGRAM.

HELLO!

输出:

111.bmp

样例解释

1、输出的相邻字符间有一个空格。 

2、最后一行的26个大写字母每次必须输出。 

3、大写字母A所在的第一列前没有空格。

提示:所读入的字符串个数不确定,有可能4个,或者3个,5个,反正不确定,可以用以下读句读入

while(getline(cin,s))  //一旦读入停止,条件读句会返回一个flase,循环终止。

{

   语句组

}

#include<bits/stdc++.h>
using namespace std;
int s[50],mx;
int main(){
    int i,j,k,l;
    string ss;
    for(i=1;i<=4;i++){
        getline(cin,ss);
        l=ss.length();
        for(j=0;j<l;j++){
            if(ss[j]>='A'&&ss[j]<='Z'){
                s[ss[j]-'A']++;
                mx=max(mx,s[ss[j]-'A']);
            }
        }
    }
    for(i=mx;i>=1;i--){
        for(j=0;j<=25;j++){
            if(s[j]>=i)
                printf("*");
            else
                printf(" ");
            printf(" ");
        }
        printf("\n");
    }
    for(k=0;k<26;k++)
        printf("%c ",k+'A');
    return 0;
}
第6题     单词缩写 查看测评数据信息

众所周知,我们通常用一个单词的首字母组成的字符串来代替一个很长的英文名称,例如:ACM是“Association for Computing Machinery”的缩写。现在我们给出一些单词序列,要求按以下规则求出该单词序列的缩写。(缩写有可能是空的)

1.凡是字母个数小于等于2的单词不要。

2.“and”、“for”、“the”这三个单词不要(包括大小写的情况)。

3.除1、2点外的单词取首字母的大写形式按顺序连起来。

输入格式

第一行为一个整数n,表示要求的单词缩写的个数。(n<=100)

接下来n行,每行一个长度小于100的单词序列,每个单词都是由大写或小写字母组成,每个单词之间有一个空格。

输出格式

输出n行,每行为对应的单词缩写。

输入/输出例子1

输入:

5

Association for Computer Machinery

Institute of Electricaland Electronics Engineers

SUN YAT SEN UNIVERSITY

The Lord of the Rings 

netease

输出:

ACM

IEEE

SYSU

LR

N

#include<bits/stdc++.h>
using namespace std;
string s, c[4]={" AND ", " FOR ", " THE "};
int n;
int main (){

cin>>n;
getline(cin, s) ;
while(n -- ){

getline(cin, s);
for(int i=0; i<s. size (); i++)
s[i]=toupper(s[i]);
s=" "+s+" ";
for(int i=0;i<3;i++)
while(s. find(c[i]) !=- 1)
s. erase(s. find(c[i])+1,4);
for(int i=0; i<s. size ()-1; i++)
if(s[i] == ' '&&s[i+1] != ' '&&s[i+2] != ' '&&s[i+3] != ' ')
cout << s[i+1];
cout << endl;
}
return 0;
}

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

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

相关文章

图像超分辨率方法与在线工具

图像超分辨率(Super Resolution, SR)是一种增强图像分辨率的技术&#xff0c;目的是从低分辨率(Low Resolution, LR)图像重建出高分辨率(High Resolution, HR)图像。这项技术在视频增强、卫星图像处理、医学成像等领域有广泛应用。图像超分辨率方法可以分为三大类&#xff1a;插…

Python算法题集_矩阵置零

Python算法题集_矩阵置零 题73&#xff1a;矩阵置零1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【三层循环】2) 改进版一【纵横计数器】3) 改进版二【原地算法】 4. 最优算法 本文为Python算法题集之一的代码示例 题73&#xff1a;矩阵置零…

linux ln命令-linux软链接、硬链接-linux软、硬链接的区别(二):软链接

0、序 上一篇&#xff1a;linux ln命令-linux软链接、硬链接-linux软、硬链接的区别(一)&#xff1a;硬链接 描述了硬链接相关内容&#xff0c;本篇主要描述软链接。 1、软链接 符号链接也称软链接&#xff0c;是将一个路径名链接到一个文件。这些文件是一种特别类型的文件。…

【JS】Express.js环境配置与示例

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍Express.js环境配置与示例。 学其所用&#xff0c;用其所学。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下次更新不…

【云手机】快速获取一台属于你的云手机,在云上调试你的应用!

0x00 前言 随着科技的飞速发展&#xff0c;云手机已然成为一种云端虚拟商品&#xff0c;它打破地域限制&#xff0c;让你随时随地畅享移动体验。红手指、小鱼云手机等平台虽便捷易用&#xff0c;却在可扩展性和隐私性方面有所欠缺。冗长的《隐私政策》是否让你望而却步&#x…

C++通用编程(2)

函数模板高级用法 1.分文件编写的优点2.普通函数的分文件编写3.函数模板的分文件编写4.细节提示5.函数模板应用高级decltype推导类型函数后置返回类型 6.总结 函数模板讲完后&#xff0c;C全部的函数类型我们就接触的差不多了。今天给做一些关于函数份文件编写的知识点补充。 1…

C# winform 多语言(json)方式实现

前后对比 使用nuget json工具包1.总体思路 创建对应的json字典对照表 { "测试":"Test", "语言":"Language", "设置":"Set", "中文(默认)":"Chinese (default)", "英文":"E…

【对象属性拷贝】⭐️按照需要转换的类型反射设置拷贝后对象的属性

背景&#xff1a; 小伙伴们大家好&#xff0c;最近开发的时候遇到一种情况&#xff0c;项目引入了全局序列化器来实现Date&#xff0c;LocalDateTime类型的字段根据时区转换&#xff0c;总体来说接口没什么要改动的&#xff0c;只要原来字段的属性是以上两种就行&#xff0c;但…

【linux】校招中的“熟悉linux操作系统”一般是指达到什么程度?

这样&#xff0c;你先在网上找一套完整openssh升级方案&#xff08;不是yum或apt的&#xff0c;要源码安装的&#xff09;&#xff0c;然后在虚拟机上反复安装测试&#xff0c;直到把他理解了、背下来。 面试的时候让你简单说说linux命令什么的&#xff0c;你就直接把这个方案…

Linux服务详解

如有错误或有补充&#xff0c;以及任何改进的意见&#xff0c;请在评论区留下您的高见&#xff0c;同时文中给出大部分命令的示例&#xff0c;即是您暂时无法在Linux中查看&#xff0c;您也可以知道各种操作的功能以及输出 如果觉得本文写的不错&#xff0c;不妨点个赞&#x…

CentOS 7中搭建NFS文件共享服务器的完整步骤

CentOS 7中搭建NFS文件共享服务器的完整步骤 要求&#xff1a;实现镜像文件共享&#xff0c;并基于挂载的共享目录配置yum源。 系统环境&#xff1a; 服务器&#xff1a;172.20.26.167-CentOS7.6 客户端&#xff1a;172.20.26.198-CentOS7.6 1、在服务器和客户端上&#x…

案例分析技巧-软件工程

一、考试情况 需求分析&#xff08;※※※※&#xff09;面向对象设计&#xff08;※※&#xff09; 二、结构化需求分析 数据流图 数据流图的平衡原则 数据流图的答题技巧 利用数据平衡原则&#xff0c;比如顶层图的输入输出应与0层图一致补充实体 人物角色&#xff1a;客户、…

MySQL 索引和事务

目录 1 索引1.1 简介1.2 使用1.3 示例 2 事务2.1 简介2.2 使用 1 索引 1.1 简介 索引是一种特殊的文件&#xff0c;包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引&#xff0c;并指定索引的类型&#xff0c;各类索引有各自的数据结构实现。 索引底层是…

TypeScript 学习笔记(Day4)

「写在前面」 本文为 b 站黑马程序员 TypeScript 教程的学习笔记。本着自己学习、分享他人的态度&#xff0c;分享学习笔记&#xff0c;希望能对大家有所帮助。推荐先按顺序阅读往期内容&#xff1a; 1. TypeScript 学习笔记&#xff08;Day1&#xff09; 2. TypeScript 学习笔…

Three.js学习2:页面引入 Three.js

一、关于 Three.js 的版本 随着页面3D化应用越来越多&#xff0c;近两年 Three.js 处于飞速发展之中。现在 Three.js 几乎每个月都会发布一个新的版本&#xff0c;会增加新的 API&#xff0c;废掉一些旧的功能之类的。 可以从 Three.js 官网 Three.js – JavaScript 3D Libra…

web漏洞扫码工具

Invicti 是一种自动化但完全可配置的 Web 应用程序安全扫描程序&#xff0c;使您能够扫描网站、Web 应用程序和 Web 服务&#xff0c;并识别安全漏洞。Invicti 可以扫描所有类型的 Web 应用程序&#xff0c;无论其构建平台或语言。 Invicti 是唯一一款能够以只读且安全的方式自…

Next.js初识

Next.js初识 Next.js&#xff1a;这是一个用于生产环境的React 框架&#xff08;国外用的比较多&#xff09;。 Next.js 为您提供生产环境所需的所有功能以及最佳的开发体验&#xff1a;包括静态及服务器端融合渲染、 支持 TypeScript、智能化打包、 路由预取等功能 无需任何配…

c#的反汇编对抗

文章目录 前记nim攻防基础FFI内存加载加解密、编码 后记C#类型转换表nim基础 前记 随便编写一个c#调用winapi并用vs生成dll,同时用csc生成exe using System; using System.Runtime.InteropServices; namespace coleak {class winfun{[DllImport("User32.dll")]publ…

【JavaEE进阶】 图书管理系统开发日记——叁

&#x1f334;前言 在前面我们实现了用户登录的接口。现在我们来实现图书列表展示页面。 &#x1f38b;数据准备 创建图书表&#xff0c;并初始化数据 -- 图书表 DROP TABLE IF EXISTS book_info; CREATE TABLE book_info (id INT ( 11 ) NOT NULL AUTO_INCREMENT,book_nam…

【数据开发】pyspark入门与RDD编程

【数据开发】pyspark入门与RDD编程 文章目录 1、pyspark介绍2、RDD与基础概念3、RDD编程3.1 Transformation/Action3.2 数据开发流程与环节 1、pyspark介绍 pyspark的用途 机器学习专有的数据分析。数据科学使用Python和支持性库的大数据。 spark与pyspark的关系 spark是一…