当前位置: 首页 > 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文件以及.…...

Companion Object - 伴生对象 类比java中的什么?

这是一个非常经典且准确的对比问题。简单来说&#xff0c;Kotlin 中的 companion object&#xff08;伴生对象&#xff09;核心类比的是 Java 中的 static&#xff08;静态&#xff09;成员。在 Java 中&#xff0c;如果你想让一个成员&#xff08;方法或变量&#xff09;属于类…...

PWM技术原理与工程实践全解析

1. PWM技术基础解析脉冲宽度调制&#xff08;PWM&#xff09;作为现代电子电力控制的核心技术&#xff0c;其本质是通过调节脉冲信号的导通时间比例来实现对功率的有效控制。我第一次接触这个概念是在调试直流电机调速项目时&#xff0c;当时被其精妙的设计思想所震撼。1.1 关键…...

Linux安装中文+MySQL的详细过程

中文安装1. 清理环境变量打开终端执行&#xff1a;sed -i /fcitx/d ~/.bashrcsed -i /GTK_IM_MODULE/d ~/.bashrcsed -i /QT_IM_MODULE/d ~/.bashrcsed -i /XMODIFIERS/d ~/.bashrc2. 重新配置 ibus 环境变量echo export GTK_IM_MODULEibus >> ~/.bashrcecho export QT_I…...

Visual C++组件维护完全指南:从问题诊断到系统优化

Visual C组件维护完全指南&#xff1a;从问题诊断到系统优化 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist Visual C组件维护是Windows系统稳定运行的关键环节&…...

Polars 2.0清洗性能天花板在哪?实测对比Dask/Modin/Vaex:单机1TB数据清洗仅需11.3秒(附完整安装脚本)

第一章&#xff1a;Polars 2.0 大规模数据清洗技巧Polars 2.0 引入了更严格的惰性执行模型、增强的字符串与时间处理能力&#xff0c;以及原生支持多线程 I/O 的 LazyFrame API&#xff0c;显著提升了 TB 级数据清洗的吞吐与可控性。相比 Pandas&#xff0c;其列式内存布局与零…...

终极指南:30分钟打造你的首个ESP32 AI智能硬件项目

终极指南&#xff1a;30分钟打造你的首个ESP32 AI智能硬件项目 【免费下载链接】xiaozhi-esp32 An MCP-based chatbot | 一个基于MCP的聊天机器人 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaozhi-esp32 还在为嵌入式AI开发的高门槛而烦恼吗&#xff1f;物联…...

文墨共鸣大模型处理Java八股文与面试题:智能学习与模拟面试

文墨共鸣大模型处理Java八股文与面试题&#xff1a;智能学习与模拟面试 准备Java技术面试&#xff0c;大概是每个开发者都绕不开的一道坎。面对海量的“八股文”知识点和层出不穷的面试题&#xff0c;你是不是也经历过这样的场景&#xff1a;翻开厚厚的面试宝典&#xff0c;感…...

西门子SMART200 PLC梯形图,SR20,昆仑通态触摸屏组态画面,常压电热水锅炉比例模糊...

西门子SMART200 PLC梯形图&#xff0c;SR20&#xff0c;昆仑通态触摸屏组态画面&#xff0c;常压电热水锅炉比例模糊控制追目标温度&#xff0c;PLC源触摸屏源CAD原理图图纸全套常压电热水锅炉那种“冰火两重天”的加热体验谁懂&#xff1f;茶水间或者小烘干池边上&#xff0c;…...

一站式AI应用开发:在PyTorch 2.8环境中集成Dify与Ollama部署大模型

一站式AI应用开发&#xff1a;在PyTorch 2.8环境中集成Dify与Ollama部署大模型 1. 企业级AI开发的新范式 想象一下这样的场景&#xff1a;你的开发团队需要在两周内上线一个智能客服系统&#xff0c;要求能理解专业术语、生成高质量回复&#xff0c;还要能与企业现有系统无缝…...

美的集团2025年营收创新高、利润100%分红 落地1.3万个AI智能体

3月30日&#xff0c;美的集团发布2025年年报&#xff0c;实现营业总收入4585亿元&#xff0c;同比增长12.1%&#xff1b;归属于上市公司股东的净利润439.5亿元&#xff0c;同比上升14%。在业绩再创新高的同时&#xff0c;伴随我国“人工智能”行动的全面实施&#xff0c;美的集…...