当前位置: 首页 > news >正文

蓝桥杯之c++入门(六)【string(practice)】

目录

        • 练习1:标题统计
          • 方法1:一次性读取整行字符,然后统计
          • 方法2:按照单词读取
          • 小提示:
        • 练习2:石头剪子布
        • 练习3:密码翻译
        • 练习4:文字处理软件
        • 练习5:单词的长度
        • 练习6:单词翻转
        • 练习7:判断字符串是否为回文
        • 练习8:手机
        • 练习9:口算练习题


练习1:标题统计

在这里插入图片描述

方法1:一次性读取整行字符,然后统计
#include <iostream>
using namespace std;
#include <string> 
#include <cctype>int main()
{string s;getline(cin , s);int cint = 0;for(auto e: s){if(isspace(e)){continue;}else{cint++;}}cout << cint << endl;return 0;
}

:isspace()函数是专门来判断一个字符是否为空白字符(空格、换行符都为空白字符);需要包含头文件<cctype>;

方法2:按照单词读取
测试点信息源代码
源代码 复制
#include <iostream>
using namespace std;
#include <string> 
int main()
{string s;int count = 0;while(cin >> s){count += s.size();}cout << count << endl;return 0;} 
小提示:

有时候处理一个字符串的时候,也不一定要一次性读取完整个字符串,如果字符串中有空格的话,其实可以当做多个单词,一次读取。

cin >>S会返回一个流对象的引l用,即cin本身。在 C++中,流对象(如cin)可以被用作布尔值来检查流的状态。如果流的状态良好(即没有发生错误),流对像的布尔值为true。如果发生错误(如遇到输入结束符或类型不匹配),布尔值为false。

在while(cin>>s)语句中,循环的条件部分检查cin流的状态。如果流成功读取到一个值,cin >〉s返回的流对象cin 将被转换为true,循环将继续。如果读取失败(例如遇到输入结束符或无法读取到一个值),cin>〉s返回的流对象cin 将被转换为false,循环将停止。

练习2:石头剪子布

在这里插入图片描述

#include <iostream>
#include <string>
using namespace std;
int main()
{int n = 0;cin >> n;int i = 0;string s1;string s2;while(n--){cin >> s1;cin >> s2;if (s1 == s2)cout << "Tie" << endl;else if (s1 == "Rock" && s2 == "Scissors")cout << "Player1" << endl;else if (s1 == "Scissors" && s2 == "Paper")cout << "Player1" << endl;else if (s1 == "Paper" && s2 == "Rock")cout << "Player1" << endl;elsecout << "Player2" << endl;}return 0;
}
练习3:密码翻译

在这里插入图片描述

#include <iostream>
using namespace std;
#include <string>
int main()
{string s;getline(cin, s);for(int i = 0; i < s.size(); i++){if(s[i] <= 'z' && s[i] > 'a' || s[i] > 'A' && s[i] <= 'Z'){s[i]--;}else if(s[i] == 'a'){s[i] = 'z';}else if(s[i] == 'A'){s[i] = 'Z';}elsecontinue;}cout << s << endl;return 0;} 
练习4:文字处理软件

在这里插入图片描述

#include <iostream>
using namespace std;
#include <string>
int main()
{int q; //循环几次 int m;string s;//原始字符串 string str; //需要处理的数据int a, b;cin >> q >> s;while (q--){cin >> m;switch (m){case 1:cin >> str;s += str;cout << s << endl;break;case 2:cin >> a >> b;s = s.substr(a, b);cout << s << endl;break;case 3:{cin >> a >> str;string s1 = s.insert(a, str);cout << s1 << endl;break;}case 4:cin >> str;size_t n = s.find(str);if (n == string::npos)cout << -1 << endl;elsecout << n << endl;break;}}return 0;
}
练习5:单词的长度

在这里插入图片描述
在这里插入图片描述

#include <iostream>
using namespace std;
#include <string>
int main()
{string s;cin >> s;cout << s.size();while(cin >> s){cout << ',' << s.size();}return 0;
}
//还可以这样处理:int main()
{string s;bool flag = true;while(cin >> s){if(flag == true){cout << s.size();flag = false;}else{size_t n = s.size();cout << ',' << n;}}return 0;} 
练习6:单词翻转

在这里插入图片描述

int main()
{string str;while (cin >> str){int left = 0;int right = str.size() - 1;//⼿动逆序while (left < right){char tmp = str[left];str[left] = str[right];str[right] = tmp;left++;right--;}cout << str << endl;}return 0;
}

其实在C++ 的STL中,包含一个算法叫reverse,可以完成字符串的逆序(反转)。需要的头文件是<algorithm>

reverse 会逆序范围[first,last)内的元素

string s = "abcdef";
reverse(s.begin(), s.end())

这⾥做个测试:

#include <iostream>
#include <algorithm>
using namespace std;
int main() 
{//反转字符串string s("hello world");reverse(s.begin(), s.end());cout << s << endl;//反转数组int arr[] = { 2,6,3,6,5,5,3,9,3 };int size = sizeof(arr) / sizeof(arr[0]);//对数组中的元素进?反转reverse(arr, arr+size); for (auto e : arr) {cout << e << " ";}cout << endl;return 0;
}
练习7:判断字符串是否为回文

在这里插入图片描述

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{string s;getline(cin, s);int left = 0;int right = s.size() - 1;while(left < right){if(s[left] != s[right]){cout << "no" << endl;return 0;}else{left++;right--;}}cout << "yes" << endl;return 0;
}

当然也可以将这个字符串逆序后和原字符串比较,看是否相等,如果相等就是回文字符串,否则就不是。代码也可以这样写:

#include <iostream>
#include <algorithm>
using namespace std;
#include <algorithm>
int main()
{string s;getline(cin, s);string s1 = s;reverse(s.begin(), s.end());if(s == s1)cout << "yes" << endl;elsecout << "no" << endl;return 0;
}
练习8:手机

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

#include <iostream>
#include <string>
using namespace std;
int count[26] = {1,2,3, 1,2,3, 1,2,3, 1,2,3, 1,2,3, 1,2,3,4, 1,2,3, 1,2,3,4};
int main()
{string s;int sum = 0;getline(cin , s);for(auto c: s){if(c == ' ')sum += 1;elsesum += count[c - 'a'];}cout << sum << endl;return 0;
}
练习9:口算练习题

在这里插入图片描述
在这里插入图片描述

#include <iostream>
using namespace std;
#include <string>
int main()
{int i = 0;string op;string last;//记录上一次的运算方式 cin >> i;while(i--){string ans;int n1, n2;int r;//结果 cin >> op;if(op == "a" || op == "b" || op == "c") //有三个数据 {cin >> n1 >> n2;ans += to_string(n1);if(op == "a"){r = n1 + n2; ans += "+";ans += to_string(n2);ans += "=";ans += to_string(r);}else if(op == "b"){r = n1 - n2; ans += "-";ans += to_string(n2);ans += "=";ans += to_string(r);}else{r = n1 * n2; ans += "*";ans += to_string(n2);ans += "=";ans += to_string(r);}last = op;}else //有两个数字 {ans += op;n1 = stoi(op);cin >> n2;if(last == "a"){r = n1 + n2; ans += "+";ans += to_string(n2);ans += "=";ans += to_string(r);}else if(last == "b"){r = n1 - n2; ans += "-";ans += to_string(n2);ans += "=";ans += to_string(r);}else{r = n1 * n2; ans += "*";ans += to_string(n2);ans += "=";ans += to_string(r);}}cout << ans << endl;cout << ans.size() << endl;}return 0;
}

相关文章:

蓝桥杯之c++入门(六)【string(practice)】

目录 练习1&#xff1a;标题统计方法1&#xff1a;一次性读取整行字符&#xff0c;然后统计方法2&#xff1a;按照单词读取小提示&#xff1a; 练习2&#xff1a;石头剪子布练习3&#xff1a;密码翻译练习4&#xff1a;文字处理软件练习5&#xff1a;单词的长度练习6&#xff1…...

go的sync包学习

包含了sync.Mutex,sync.RWMutex,sync.Cond,sync.Map,sync.Once等demo sync.Mutex //讲解mutex import ("fmt""math/rand""sync""time" )type Toilet struct {m sync.Mutex } type Person struct {Name string }var DateTime "2…...

互联网上常见的,ip地址泛播什么意思

互联网上常见的&#xff0c;ip地址泛播什么意思&#xff01; 泛播通过将IP地址广播发送到网络中的所有设备&#xff0c;使得这些设备能够接收到相关信息。例如&#xff0c;DHCP服务器在局域网中广播提供IP地址的请求&#xff0c;以便新设备能够获取一个可用的IP地址。此外&…...

Linux/C高级(精讲)----shell结构语句、shell数组

shell脚本 功能性语句 test 可测试对象三种&#xff1a;字符串 整数 文件属性 每种测试对象都有若干测试操作符 1&#xff09;字符串的测试&#xff1a; s1 s2 测试两个字符串的内容是否完全一样 s1 ! s2 测试两个字符串的内容是否有差异 -z s1 测试s1 字符串的长度是…...

14.kafka开机自启动配置

要在Linux(RHEL7.7)系统中设置kafka开机自启动&#xff0c;可以创建一个系统服务单元文件。以下是为详细配置部署&#xff0c;假设你已经安装了kafka并且可以通过kafka-server-start.sh命令启动它。 1.进入/lib/systemd/system目录 命令&#xff1a; cd /lib/systemd/system…...

11 享元(Flyweight)模式

享元模式 1.1 分类 &#xff08;对象&#xff09;结构型 1.2 提出问题 做一个车管所系统&#xff0c;将会产生大量的车辆实体&#xff0c;如果每一个实例都保存自己的所有信息&#xff0c;将会需要大量内存&#xff0c;甚至导致程序崩溃。 1.3 解决方案 运用共享技术有效…...

PHP JSON操作指南

PHP JSON操作指南 概述 JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;易于人阅读和编写&#xff0c;同时也易于机器解析和生成。PHP作为一门流行的服务器端脚本语言&#xff0c;支持对JSON数据进行读取、编写和解析。本文将…...

【学习笔记】计算机图形学的几何数学基础知识

3D坐标系 左手系和右手系 点 x,y,z与w(齐次坐标) 矩阵 第一个下标表示行号,第二个下标表示列号。矩阵乘法不满足交换律矩阵乘法=矩阵合并一个矩阵乘以它的逆矩阵=单位矩阵变化矩阵 平移矩阵 缩放矩阵 除了可以缩放, 还可以利用缩放,在给定右手系的情况确定左手系…...

Python因为网络原因安装依赖库报错

现象 在终端运行以下指令 pip install pyautogui pillow keyboard 出现报错&#xff0c;终端信息如下&#xff1a; PS D:\code\Python> pip install pyautogui pillow keyboard Collecting pyautoguiUsing cached PyAutoGUI-0.9.54.tar.gz (61 kB)Installing build depe…...

什么是卸荷器?风力发电为什么要用卸荷器

目前市场上&#xff0c;那些功率低于400W的小型风力发电机&#xff0c;普遍缺乏刹车、稳速或限速机制。只要有足够的风力&#xff0c;发电机便会开始转动并产生电力。风力越强&#xff0c;转速就越快&#xff0c;这可能导致发电机因转速过高而损坏&#xff0c;甚至发生风机头飞…...

SQL Server详细使用教程(包含启动SQL server服务、建立数据库、建表的详细操作) 非常适合初学者

SQL Server详细使用教程(包含启动SQL server服务、建立数据库、建表的详细操作) 非常适合初学者 文章目录 目录 前言 一、启动SQL server服务的三种方法 1.不启动SQL server服务的影响 2.方法一&#xff1a;利用cmd启动SQL server服务 3.方法二&#xff1a;利用SQL Serv…...

大数据学习之Spark分布式计算框架RDD、内核进阶

一.RDD 28.RDD_为什么需要RDD 29.RDD_定义 30.RDD_五大特性总述 31.RDD_五大特性1 32.RDD_五大特性2 33.RDD_五大特性3 34.RDD_五大特性4 35.RDD_五大特性5 36.RDD_五大特性总结 37.RDD_创建概述 38.RDD_并行化创建 演示代码&#xff1a; // 获取当前 RDD 的分区数 Since ( …...

Unity 加载OSGB(webgl直接加载,无需转换格式!)

Unity webgl加载倾斜摄影数据 前言效果图后续不足 前言 Unity加载倾斜摄影数据&#xff0c;有很多的插件方便好用&#xff0c;但是发布到网页端均失败&#xff0c;因为webgl 的限制&#xff0c;IO读取失效。 前不久发现一个开源项目: UnityOSGB-main 通过两种方式在 Unity 中…...

tcp/ip网络协议,tcp/ip网络协议栈

TCP/IP网络协议和TCP/IP网络协议栈是互联网通信的基石&#xff0c;它们定义了电子设备如何连入因特网以及数据如何在它们之间传输的标准。以下是对TCP/IP网络协议和TCP/IP网络协议栈的详细解释&#xff1a; 一、TCP/IP网络协议 TCP/IP&#xff08;Transmission Control Proto…...

【Debug】the remote host closed the connection错误信息分析

出现的情况说明&#xff1a;QT软件。刚开始都可以连接成功 之后连接 断开几次 就会出现连接失败 错误信息是the remote host closed the connection。the remote host closed the connection广泛原因分析 这个错误通常意味着远端 STM32 服务器主动关闭了连接。可能的原因包括&a…...

SpringBoot扩展篇:@Scope和@Lazy源码解析

SpringBoot扩展篇&#xff1a;Scope和Lazy源码解析 1. 研究主题及Demo2. 注册BeanDefinition3. 初始化属性3.1 解决依赖注入3.2 创建代理 ContextAnnotationAutowireCandidateResolver#getLazyResolutionProxyIfNecessary3.3 代理拦截处理3.4 单例bean与原型bean创建的区别 4. …...

“AI隐患识别系统,安全多了道“智能护盾”

家人们&#xff0c;在生活和工作里&#xff0c;咱们都知道安全那可是头等大事。不管是走在马路上&#xff0c;还是在工厂车间忙碌&#xff0c;又或是住在高楼大厦里&#xff0c;身边都可能藏着一些安全隐患。以前&#xff0c;发现这些隐患大多靠咱们的眼睛和经验&#xff0c;可…...

通向AGI之路:人工通用智能的技术演进与人类未来

文章目录 引言:当机器开始思考一、AGI的本质定义与技术演进1.1 从专用到通用:智能形态的范式转移1.2 AGI发展路线图二、突破AGI的五大技术路径2.1 神经符号整合(Neuro-Symbolic AI)2.2 世界模型架构(World Models)2.3 具身认知理论(Embodied Cognition)三、AGI安全:价…...

论文阅读:InstanceDiffusion: Instance-level Control for Image Generation

CVPR2024文章 摘要&#xff1a; 文本到图像扩散模型产生高质量的图像&#xff0c;但不提供对图像中单个实例的控制。我们引入了InstanceDiffusion&#xff0c;它将精确的实例级控制添加到文本到图像扩散模型中。InstanceDiffusion 支持每个实例的自由形式的语言条件&#xff…...

7.攻防世界 wzsc_文件上传

打开题目页面如下 上传了一张带有木马的图片 返回的页面是空白的&#xff0c;不过路径变了 猜测存在根目录/upload 也可以通过dirsearch扫描根目录 命令&#xff1a; dirsearch -u http://61.147.171.105:65024/ -e* 终于得到了上传的文件的信息 但是测试发现.php文件以及.…...

GA/T 1400视图库实战:从零部署Easy1400平台到设备级联全流程解析

1. 初识GA/T 1400与Easy1400平台 第一次接触GA/T 1400标准时&#xff0c;我完全被各种专业术语绕晕了。简单来说&#xff0c;这是一套专门针对视频监控领域的行业标准&#xff0c;规定了视频图像信息在采集、传输、存储等环节的技术要求。而Easy1400就是基于这个标准开发的一套…...

3步实现AutoHotkey脚本独立运行:Ahk2Exe编译工具完全指南

3步实现AutoHotkey脚本独立运行&#xff1a;Ahk2Exe编译工具完全指南 【免费下载链接】Ahk2Exe Official AutoHotkey script compiler - written itself in AutoHotkey 项目地址: https://gitcode.com/gh_mirrors/ah/Ahk2Exe 你是否厌倦了每次运行AutoHotkey脚本都需要安…...

用Python和OpenCV手把手教你搞定自动驾驶图像坐标系转换(附NuScenes数据集实战代码)

用Python和OpenCV手把手教你搞定自动驾驶图像坐标系转换&#xff08;附NuScenes数据集实战代码&#xff09; 自动驾驶技术的核心在于让车辆"看懂"周围环境&#xff0c;而坐标系转换正是连接物理世界与数字世界的桥梁。想象一下&#xff0c;当一辆自动驾驶汽车行驶在…...

避开这5个坑,你的癫痫脑电AI模型准确率能翻倍:从数据标注到特征工程实战

避开这5个坑&#xff0c;你的癫痫脑电AI模型准确率能翻倍&#xff1a;从数据标注到特征工程实战 在医疗AI领域&#xff0c;癫痫脑电信号分析一直是个充满挑战的课题。许多开发者满怀信心地构建模型&#xff0c;却在验证阶段遭遇性能瓶颈——准确率停滞不前&#xff0c;误报率居…...

Hitboxer终极指南:专业级游戏键盘重映射与SOCD清理工具完全教程

Hitboxer终极指南&#xff1a;专业级游戏键盘重映射与SOCD清理工具完全教程 【免费下载链接】socd Key remapper for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd Hitboxer是一款专为竞技游戏玩家设计的专业级键盘按键重映射和SOCD清理工具&#xff…...

qmcdump:专业解决QQ音乐加密音频格式兼容性问题

qmcdump&#xff1a;专业解决QQ音乐加密音频格式兼容性问题 【免费下载链接】qmcdump 一个简单的QQ音乐解码&#xff08;qmcflac/qmc0/qmc3 转 flac/mp3&#xff09;&#xff0c;仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump 在数字音乐时…...

使用mcp-maker快速构建AI工具调用服务器:从协议原理到工程实践

1. 项目概述与核心价值最近在折腾AI应用开发&#xff0c;特别是想给大语言模型&#xff08;LLM&#xff09;装上更强大的“手脚”&#xff0c;让它能直接操作我电脑上的各种软件和工具。这听起来很酷&#xff0c;对吧&#xff1f;但实际操作起来&#xff0c;你会发现一个核心痛…...

从零打造会“看”的电子眼:Teensy与OLED的嵌入式图形与传感器实践

1. 项目概述&#xff1a;打造一个会“看”的电子生命体几年前&#xff0c;我第一次在创客社区看到“Uncanny Eyes”项目时就被深深吸引了。一个微小的OLED屏幕&#xff0c;在代码驱动下&#xff0c;竟然能呈现出如此逼真、灵动的眼球运动&#xff0c;那种介于生命与机械之间的诡…...

数据分析师能力展示:从项目构建到报告呈现的完整指南

1. 项目概述&#xff1a;一个数据分析师的能力展示平台最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“dataanalyst-showcase”。光看名字&#xff0c;你可能会觉得这又是一个数据科学项目合集&#xff0c;但点进去仔细研究后&#xff0c;我发现它的定位非常精准——它不…...

Linux内核升级C11标准:从C89到现代C语言的演进与实战解析

1. 项目概述&#xff1a;一次内核语言的“心脏移植”最近Linux内核社区的一个决定&#xff0c;在开发者圈子里激起了不小的波澜&#xff1a;计划将内核的C语言标准从使用了超过十年的C89/C90&#xff0c;逐步迁移到C11。这听起来可能像是一个枯燥的技术规范更新&#xff0c;但对…...