蓝桥杯之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;
}

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

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

相关文章

uniapp访问django目录中的图片和视频,2025[最新]中间件访问方式

新建中间件, middleware.py 匹配,以/cover_image/ 开头的图片 匹配以/episode_video/ 开头的视频 imageSrc: http://192.168.110.148:8000/cover_image/12345/1738760890657_mmexport1738154397386.jpg, videoSrc: http://192.168.110.148:8000/episode_video/12345/compres…

gc buffer busy acquire导致的重大数据库性能故障

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验 Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯…

[NKU]C++安装环境 VScode

bilibili安装教程 vscode 关于C/C的环境配置全站最简单易懂&#xff01;&#xff01;大学生及初学初学C/C进&#xff01;&#xff01;&#xff01;_哔哩哔哩_bilibili 1安装vscode和插件 汉化插件 ​ 2安装插件 2.1 C/C 2.2 C/C Compile run ​ 2.3 better C Syntax ​ 查看已…

DeepSeek-r1模型本地化部署最新教程

新的改变 DeepSeek 的搜索引擎基于深度学习算法&#xff0c;能够理解和分析大量的数据源&#xff08;如文本、图像、视频等&#xff09;&#xff0c;并结合用户的行为数据和偏好&#xff0c;提供个性化的搜索结果。 最近爆火的DeepSeek不用多说了&#xff0c;快来本地部署感受…

网络工程师 (20)计算机网络的概念

一、定义 计算机网络是指将地理位置不同、具有独立功能的多台计算机及其外部设备&#xff0c;通过通信线路及通信设备连接起来&#xff0c;在网络操作系统、网络管理软件及网络通信协议的管理和协调下&#xff0c;实现信息传递和资源共享的计算机通信系统。 二、组成 资源子网&…

支持向量机(一)

支持向量机是典型的二分类模型&#xff0c;以其模型简单、实现简单、效果卓越而著称。 一元支持向量机 我们通过一条中间线根据特征对样本实现分类&#xff0c;很明显&#xff1a;两个支持样本的差别越大&#xff0c;两个支持样本的分类效果就越好。 二元支持向量机 在实际生…

React 设计模式:实用指南

React 提供了众多出色的特性以及丰富的设计模式&#xff0c;用于简化开发流程。开发者能够借助 React 组件设计模式&#xff0c;降低开发时间以及编码的工作量。此外&#xff0c;这些模式让 React 开发者能够构建出成果更显著、性能更优越的各类应用程序。 本文将会为您介绍五…

vscode 如何通过Continue引入AI 助手deepseek

第一步&#xff1a; 在deepseek 官网上注册账号&#xff0c;得到APIKeys(deepseek官网地址) 创建属于自己的APIKey,然后复制这个key,(注意保存自己的key)! 第二步&#xff1a; 打开vscode,在插件市场安装Continue插件, 点击设置&#xff0c;添加deepseek模型&#xff0c;默认…

LPJ-GUESS模型入门(一)

一、模型简介 LPJ-GUESS是一个基于过程的动态植被陆地生态系统模型&#xff0c;专为区域或全球研究而设计。这种模型通常被称为动态全球植被模型&#xff08;DGVM&#xff09;。根据区域气候条件和大气二氧化碳浓度的数据&#xff0c;它可以预测地球主要气候带本土生态系统的结…

Windows本地部署DeepSeek-R1大模型并使用web界面远程交互

文章目录 前言1. 安装Ollama2. 安装DeepSeek-r1模型3. 安装图形化界面3.1 Windows系统安装Docker3.2 Docker部署Open WebUI3.3 添加Deepseek模型 4. 安装内网穿透工具5. 配置固定公网地址 前言 最近爆火的国产AI大模型Deepseek详细大家都不陌生&#xff0c;不过除了在手机上安…

MySQL时间类型相关总结(DATETIME, TIMESTAMP, DATE, TIME, YEAR)

MySQL时间类型相关总结(DATETIME, TIMESTAMP, DATE, TIME, YEAR) MySQL官方文档&#xff1a; https://dev.mysql.com/doc/refman/8.0/en/date-and-time-types.html 一. 对比&#xff1a; 在 MySQL 中&#xff0c;处理时间相关的数据类型主要有以下几种&#xff1a;DATE、TIME、…

Ubuntu部署Deepseek-R1模型(8b)

安装ubuntu系统 本机电脑系统ubuntu-20.04 #升级软件 sudo apt-get update#安装curl sudo apt-get install curl通过以上两条指令&#xff0c;完成了curl命令的安装。 安装ollama 打开Ollama官网 选择Linux&#xff0c; 给出如上图方框所示的一条指令 curl -fsSL https:…

【教程】docker升级镜像

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 目录 自动升级 手动升级 无论哪种方式&#xff0c;最重要的是一定要通过-v参数做数据的持久化&#xff01; 自动升级 使用watchtower&#xff0c;可…

4 前端前置技术(上):AJAX技术、Axios技术(前端发送请求)

文章目录 前言一、Ajax技术&#xff08;从服务端获取数据&#xff0c;发送各种请求&#xff09;0 接口文档管理&#xff1a;使用apipost等接口测试软件创建接口便于前端后端分离测试1 基本概念2 原生Ajax使用示例&#xff08;几年前的早期用法&#xff09; 二、 Axios技术(对原…

Google C++ Style / 谷歌C++开源风格

文章目录 前言1. 头文件1.1 自给自足的头文件1.2 #define 防护符1.3 导入你的依赖1.4 前向声明1.5 内联函数1.6 #include 的路径及顺序 2. 作用域2.1 命名空间2.2 内部链接2.3 非成员函数、静态成员函数和全局函数2.4 局部变量2.5 静态和全局变量2.6 thread_local 变量 3. 类3.…

在 Mac M2 上安装 PyTorch 并启用 MPS 加速的详细教程与性能对比

1. 安装torch 在官网上可以查看安装教程&#xff0c;Start Locally | PyTorch 作者安装了目前最新的torch版本2.5.1&#xff0c;需要提前安装python3.9及以上版本&#xff0c;作者python版本是python3.11最新版本 使用conda安装torch&#xff0c;在终端进入要安装的环境&…

股指入门:股指期货是什么意思?在哪里可以做股指期货交易?

股指期货是一种以股票指数为标的物的期货合约&#xff0c;也可以称为股票指数期货或期指。 股指期货是什么意思&#xff1f; 股指期货是一种金融衍生品&#xff0c;其标的资产是股票市场上的股指&#xff0c;例如标普500指数、道琼斯工业平均指数、上证50指数等。 股指期货允…

ZooKeeper单节点详细部署流程

ZooKeeper单节点详细部署流程 文章目录 ZooKeeper单节点详细部署流程 一.下载稳定版本**ZooKeeper**二进制安装包二.安装并启动**ZooKeeper**1.安装**ZooKeeper**2.配置并启动**ZooKeeper** ZooKeeper 版本与 JDK 兼容性3.检查启动状态4.配置环境变量 三.可视化工具管理**Zooke…

【高级篇 / IPv6】(7.2) ❀ 04. 在60E上配置ADSL拨号宽带上网(IPv4) ❀ FortiGate 防火墙

【简介】除了单位用户以外&#xff0c;大部分个人用户目前使用的仍然是30E、50E、60E系列防火墙&#xff0c;固件无法达到目前最高版本7.6&#xff0c;这里以最常用的60E为例&#xff0c;演示固件版本7.2下实现ADSL拨号宽带的IPv6上网。由于内容比较多&#xff0c;文章分上、下…

51单片机07 串口通信

串口是一种应用十分广泛的通讯接口&#xff0c;串口成本低、容易使用、通信线路简单&#xff0c;可实现两个设备的互相通信。单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信。51单片机内部自带UART&#xff08;Universal Asynchronous Recei…