NO.29十六届蓝桥杯备战|string九道练习|reverse|翻转|回文(C++)

news/2025/3/11 12:47:30/
P5015 [NOIP 2018 普及组] 标题统计 - 洛谷
#include <bits/stdc++.h>
using namespace std;int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);string s;getline(cin, s);int sz = s.size();int cnt = 0;for (int i = 0; i < sz; i++){if (isspace(s[i]))continue;elsecnt++;}cout << cnt << endl;return 0;
}

isspace判断是否是空白字符,即空格和换行

#include <bits/stdc++.h>
using namespace std;int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);string s;getline(cin, s);int cnt = 0;for (auto x : s){if (isspace(x))continue;elsecnt++;}cout << cnt << endl;return 0;
}

方法二:按照单词读取

#include <bits/stdc++.h>
using namespace std;int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);string s;int cnt = 0;while (cin >> s){cnt += s.size();        }cout << cnt << endl;return 0;
}

有时候处理⼀个字符串的时候,也不⼀定要⼀次性读取完整个字符串,如果字符串中有空格的话,其实可以当做多个单词,⼀次读取。
cin >> s 会返回⼀个流对象的引⽤,即 cin 本⾝。在C++中,流对象(如 cin )可以被⽤作布尔值来检查流的状态。如果流的状态良好(即没有发⽣错误),流对象的布尔值为 true 。如果发⽣错误(如遇到输⼊结束符或类型不匹配),布尔值为 false 。
在 while (cin >> s) 语句中,循环的条件部分检查 cin 流的状态。如果流成功读取到⼀个值, cin >> s 返回的流对象cin 将被转换为true ,循环将继续。如果读取失败(例如遇到输⼊结束符或⽆法读取到⼀个值), cin >> s 返回的流对象 cin 将被转换为 false ,循环将停⽌。

B2112 石头剪子布 - 洛谷
#include <bits/stdc++.h>
using namespace std;int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);int n;cin >> n;string p1, p2;while (n--){cin >> p1 >> p2;if (p1 == p2)cout << "Tie" << endl;else if (p1 == "Rock" && p2 == "Scissors")cout << "Player1" << endl;else if (p1 == "Scissors" && p2 == "Paper")cout << "Player1" << endl;else if (p1 == "Paper" && p2 == "Rock")cout << "Player1" << endl;elsecout << "Player2" << endl;}return 0;
}
B2115 密码翻译 - 洛谷

![[Pasted image 20250307210105.png]]

#include <bits/stdc++.h>
using namespace std;int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);string s;getline(cin, s);for (auto &x : s){if ((x >= 'b' && x <= 'z') || (x >= 'B' && x <= 'Z'))x--;else if (x == 'a')x = 'z';else if (x == 'A')x = 'Z';}cout << s << endl;return 0;
}
P5734 【深基6.例6】文字处理软件 - 洛谷
#include <bits/stdc++.h>
using namespace std;int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);int q = 0;int m = 0;string s;string str;int a, b;cin >> q;cin >> 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;s.insert(a, str);cout << s << 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;
}
B2120 单词的长度 - 洛谷
#include <bits/stdc++.h>
using namespace std;int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);string s;cin >> s;cout << s.size();while (cin >> s){size_t n = s.size();cout << ',' << n;}cout << endl;return 0;
}
#include <bits/stdc++.h>
using namespace std;int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);string s;bool flag = true;while (cin >> s){if (flag){cout << s.size();flag = false;}else{size_t n = s.size();cout << ',' << n;  }}cout << endl;return 0;
}
B2122 单词翻转 - 洛谷
#include <bits/stdc++.h>
using namespace std;int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);string s;while (cin >> s){int left = 0;int right = s.size() - 1;while (left < right){char tmp = s[left];s[left] = s[right];s[right] = tmp;left++;right--;}cout << s << endl;}return 0;
}

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

void reverse (BidirectionalIterator first, BidirectionalIterator last);  
//first: 指向要反转范围的第⼀个元素的迭代器(也可以是地址)  
//last: 指向要反转范围的最后⼀个元素的下⼀个位置的迭代器(也可以是地址)(翻转时不包括此元素)。

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

string s = "abcdef";  
reverse(s.begin(), s.end());
#include <iostream>  
#include <algorithm>  
using namespace std;
int main()  
{  //反转字符串  string s("abcdef");  reverse(s.begin(), s.end());  cout << s << endl;  //反转数组  int arr[] = { 1,2,3,4,5,6,7,8,9,10 };  int size = sizeof(arr) / sizeof(arr[0]);  //对数组中的元素进⾏反转  reverse(arr, arr+size);  for (auto e : arr)  {  cout << e << " ";  }  cout << endl;  return 0;  
}

![[Pasted image 20250308104344.png]]

#include <bits/stdc++.h>
using namespace std;int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);string s;while (cin >> s){reverse(s.begin(), s.end());cout << s << endl;}return 0;
}
B2124 判断字符串是否为回文 - 洛谷
#include <bits/stdc++.h>
using namespace std;int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);string s;cin >> s;string s1;s1 = s;reverse(s.begin(), s.end());if (s1 == s)cout << "yes" << endl;elsecout << "no" << endl;return 0;
}
#include <bits/stdc++.h>
using namespace std;int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);string s;cin >> s;int left = 0;int right = s.size() - 1;while (left < right){if (s[left] != s[right]){cout << "no" << endl;break;}left++;right--;}if (left >= right)cout << "yes" << endl;return 0;
}
P1765 手机 - 洛谷
#include <bits/stdc++.h>
using namespace std;int c[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()
{ios::sync_with_stdio(false);cin.tie(nullptr);string s;getline(cin, s);int cnt = 0;for (auto x : s){if (x == ' ')cnt++;elsecnt += c[x - 'a'];}cout << cnt << endl;return 0;
}
P1957 口算练习题 - 洛谷
#include <bits/stdc++.h>
using namespace std;int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);int i = 0;cin >> i;string op;string last;while(i--){string ans;cin >> op;int n1, n2;int r = 0;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{n1 = stoi(op);ans += to_string(n1);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;
}
#include <iostream>  
#include <string>  
using namespace std;  
int main()  
{  int n = 0;  cin >> n;  string op;  string num1;  string num2;  string last;  int ret = 0;  while (n--)  {  string ans;  cin >> op;  if (op == "a" || op == "b" || op == "c")  {  cin >> num1 >> num2;  int n1 = stoi(num1);  int n2 = stoi(num2);  ans += num1;  if (op == "a")  ret = n1 + n2, ans += "+";  else if (op == "b")  ret = n1 - n2, ans += "-";  else  ret = n1 * n2, ans += "*";  last = op;  }  else  {  num1 = op;  cin >> num2;  int n1 = stoi(num1);  int n2 = stoi(num2);ans += num1;  if (last == "a")  ret = n1 + n2, ans += "+";  else if (last == "b")  ret = n1 - n2, ans += "-";  else  ret = n1 * n2, ans += "*";  }  ans += (num2 + "=" + to_string(ret));  cout << ans << endl;  cout << ans.size() << endl;  }  return 0;  
}

http://www.ppmy.cn/news/1578347.html

相关文章

【单片机】嵌入式系统的硬件与软件特性

嵌入式系统的软件结构 嵌入式系统的软件结构一般分为 不带操作系统&#xff08;Bare Metal&#xff09; 和 带操作系统&#xff08;RTOS / Linux&#xff09; 两种。不同的软件架构适用于不同的应用场景&#xff0c;如 简单控制系统、实时控制系统、物联网、工业自动化等。 嵌…

QT显示网页控件QAxWidget、QWebEngineView及区别

一.QT种显示网页控件QAxWidget 1.介绍 QAxWidget 属于 QtAxContainer 模块&#xff0c;ActiveX 是微软提出的一种组件对象模型&#xff08;COM&#xff09;技术&#xff0c;允许不同的软件组件在 Windows 操作系统上进行交互和集成。QAxWidget 为开发者提供了在 Qt 应用程序中…

DeepSeek-进阶版部署(Linux+GPU)

前面几个小节讲解的Win和Linux部署DeepSeek的比较简单的方法&#xff0c;而且采用的模型也是最小的&#xff0c;作为测试体验使用是没问题的。如果要在生产环境使用还是需要用到GPU来实现&#xff0c;下面我将以有一台带上GPU显卡的Linux机器来部署DeepSeek。这里还只是先体验单…

php中JSON或数组到formData的键值对转换

在开发web应用时&#xff0c;经常需要将数据以AJAX的方式提交到服务器。通常这些数据以JSON格式或数组形式出现&#xff0c;而服务器端期望的却是 application/x-www-form-urlencoded或 multipart/form-data格式&#xff0c;即formData。在PHP中&#xff0c;将JSON或数组转换为…

django下防御race condition漏洞(竞争型漏洞)

目录 竞争型漏洞 概念 常见类型及示例 环境搭建 ​编辑漏洞复现 ucenter/1/ ucenter/2/ ucenter/3/ ucenter/4/ 总结 悲观锁 乐观锁 竞争型漏洞 概念 竞争型漏洞&#xff0c;也称为竞态条件漏洞&#xff08;Race Condition Vulnerability&#xff09;&#xff0c;…

vue3中接收props的两种写法

在 Vue 3 中&#xff0c;接收 props 有两种主要的写法&#xff0c;分别是运行时声明和基于类型的声明。下面为你详细介绍这两种写法。 1. 运行时声明 运行时声明是 Vue 2 中就已经存在的方式&#xff0c;在 Vue 3 中依然可以使用。这种方式通过在组件中使用 defineProps 宏来…

VSCode离线安装Verilog插件教程

本章教程&#xff0c;主要介绍如何在vscode中离线安装Verilog插件。 插件名称&#xff1a;Verilog-HDL/SystemVerilog/Bluespec SystemVerilog 一、下载插件 下载地址&#xff1a;https://open-vsx.org/extension/mshr-h/veriloghdl 二、离线安装 vscode离线安装步骤如下&#…

电力行业中分布式能源管理(Distributed Energy Management System, DEMS)的实现

以下是电力行业中分布式能源管理(Distributed Energy Management System, DEMS)的实现方案,涵盖系统架构、关键技术、核心功能及实施路径,结合典型场景与代码示例: 一、系统架构设计 采用云-边-端三层架构,实现分布式能源的高效协同管理: 1. 终端层(感知层) 设备组…