蓝桥杯之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;
 		else
 			cout << "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';
		}
		else
		continue;
	}
	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;
			else
				cout << 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;
	else
		cout << "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;
 	else
 	sum += 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;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows编程:下载与安装 Visual Studio 2010

本节前言 在写作本节的时候&#xff0c;本来呢&#xff0c;我正在写的专栏&#xff0c;是 MFC 专栏。而 VS2010 和 VS2019&#xff0c;正是 MFC 学习与开发中&#xff0c;可以使用的两款软件。然而呢&#xff0c;如果你去学习 Windows API 知识的话&#xff0c;那么&#xff0…

基于ansible部署elk集群

ansible部署 ELK部署 ELK常见架构 &#xff08;1&#xff09;ElasticsearchLogstashKibana&#xff1a;这种架构是最常见的一种&#xff0c;也是最简单的一种架构&#xff0c;这种架构通过Logstash收集日志&#xff0c;运用Elasticsearch分析日志&#xff0c;最后通过Kibana中…

(苍穹外卖)项目结构

苍穹外卖项目结构 后端工程基于 maven 进行项目构建&#xff0c;并且进行分模块开发。 1). 用 IDEA 打开初始工程&#xff0c;了解项目的整体结构&#xff1a; 对工程的每个模块作用说明&#xff1a; 序号名称说明1sky-take-outmaven父工程&#xff0c;统一管理依赖版本&…

达梦数据库从单主模式转换为主备模式

目录标题 达梦数据库单主转主备配置笔记前期准备服务器环境数据库安装磁盘空间 流程流程图说明基于脱机备份方式的单实例转主备流程图详细步骤说明 详细步骤1. 检查主库归档模式2. 配置主库配置文件dm.ini 文件dmmal.ini 文件dmarch.ini 文件 3. 备份主库数据库4. 备库配置新建…

计算机毕业设计hadoop+spark+hive民宿推荐系统 酒店推荐系统 民宿价格预测 酒店价预测 机器学习 深度学习 Python爬虫 HDFS集群

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

接口对象封装思想及实现-笔记

目录 接口对象封装代码分层思想 封装案例封装Tpshop商城登录Tpshop商城登录参数化 接口自动化测试框架 接口对象封装 代码分层思想 分层思想&#xff1a;将普通思想分为两层&#xff0c;分为接口对象层和测试脚本层 接口对象层&#xff1a; 对接口进行封装&#xff0c;封装好之…

【LeetCode】5. 贪心算法:买卖股票时机

太久没更了&#xff0c;抽空学习下。 看一道简单题。 class Solution:def maxProfit(self, prices: List[int]) -> int:cost -1profit 0for i in prices:if cost -1:cost icontinueprofit_ i - costif profit_ > profit:profit profit_if cost > i:cost iret…

微信小程序调用企业微信客户服务插件联通企业微信客服

需求背景:用户在小程序页面点击按钮添加企业微信的客服 相关技术:基于uniapp开发的微信小程序 插件名称:企业微信客户服务插件「联系我」插件 - 文档 - 企业微信开发者中心 仔细阅读文档「联系我」插件 - 文档 - 企业微信开发者中心 以下是我的实例代码 1.首先先小程序管…

大数据数仓实战项目(离线数仓+实时数仓)2

目录 1.课程目标和课程内容介绍 2.数仓维度建模设计 3.数仓为什么要分层 4.数仓分层思想和作用 5.数仓中表的种类和同步策略 6.数仓中表字段介绍以及表关系梳理 订单表itcast_orders 订单明细表 itcast_order_goods 商品信息表 itcast_goods 店铺表 itcast_shops 商…

【Android】jni开发之导入opencv和libyuv来进行图像处理

做视频图像处理时需要对其进行水印的添加&#xff0c;放在应用层调用工具性能方面不太满意&#xff0c;于是当下采用opencvlibyuv方法进行处理。 对于Android的jni开发不是很懂&#xff0c;我的需求是导入opencv方便在cpp中调用&#xff0c;但目前找到的教程都是把opencv作为模…

理解 C 与 C++ 中的 const 常量与数组大小的关系

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 &#x1f4af;前言&#x1f4af;数组大小的常量要求&#x1f4af;C 语言中的数组大小要求&#x1f4af;C 中的数组大小要求&#x1f4af;为什么 C 中 const 变量可以作为数组大小&#x1f4af;进一步的…

小菜鸟系统学习Python第六天

1.函数: 2.全局变量加global(这里博主记混了,global使用的时候不能赋值,然后就错了两回) 3.内嵌函数 4.闭包 存在嵌套函数&#xff1a;在一个函数内部定义另一个函数。内部函数引用外部函数的变量&#xff1a;内部函数使用了外部函数作用域中的变量。外部函数返回内部函数&…

【STM32系列】利用MATLAB配合ARM-DSP库设计IIR数字滤波器(保姆级教程)

ps.源码放在最后面 设计FIR数字滤波器可以看这里&#xff1a;利用MATLAB配合ARM-DSP库设计FIR数字滤波器&#xff08;保姆级教程&#xff09; 设计IIR滤波器 MATLAB配置 设计步骤 首先在命令行窗口输入"filterDesigner"&#xff0c;接着就会跳出以下界面&#xf…

WSL2中安装的ubuntu搭建tftp服务器uboot通过tftp下载

Windows中安装wsl2&#xff0c;wsl2里安装ubuntu。 1. Wsl启动后 1&#xff09;Windows下ip ipconfig 以太网适配器 vEthernet (WSL (Hyper-V firewall)): 连接特定的 DNS 后缀 . . . . . . . : IPv4 地址 . . . . . . . . . . . . : 172.19.32.1 子网掩码 . . . . . . . .…

ES冷热数据分离配置

冷热数据是根据索引创建时间来进行迁移的。一旦迁移到冷数据节点&#xff0c;则无法再恢复成热数据&#xff0c;因为热数据节点中该索引已经没有分片存在了。 基于Docker搭建ES集群,并设置冷热数据节点 配置冷热数据迁移策略 PUT https://192.168.x.xx:19200/_ilm/policy/my…

Javaweb学习日记(十一)Mybatis-基础操作

一、环境准备 二、基础操作-删除 日志输出&#xff1a; SQL注入&#xff1a; sql注入&#xff1a;例如一个登录页面&#xff0c;需要满足账号密码同时匹配数据库内的数据才可登录&#xff08;点击登录也页面在后台生成一条sql语句去检验是否正确&#xff08;通过判断sql语句返…

小程序-基础加强

前言 这一节把基础加强讲完 1. 导入需要用到的小程序项目 2. 初步安装和使用vant组件库 这里还可以扫描二维码 其中步骤四没什么用 右键选择最后一个 在开始之前&#xff0c;我们的项目根目录得有package.json 没有的话&#xff0c;我们就初始化一个 但是我们没有npm这个…

Spring @PropertySource:让你的应用配置更加模块化和可维护

PropertySource注解在Spring中的作用&#xff0c;就像是给Spring应用配了一个“外部配置箱”。 想象一下&#xff0c;你在开发一个Spring应用时&#xff0c;有很多配置信息需要设置&#xff0c;比如数据库的连接信息、应用的某些功能开关等。如果这些信息都硬编码在代码中&…

尝试在Excel里调用硅基流动上的免费大语言模型

我个人觉得通过api而不是直接浏览器客户端聊天调用大语言模型是使用人工智能大模型的一个相对进阶的阶段。 于是就尝试了一下。我用的是老师木 袁进辉博士新创的硅基流动云上的免费的大模型。——虽然自己获赠了不少免费token&#xff0c;但测试阶段用不上。 具体步骤如下&am…

问卷数据分析|SPSS之分类变量描述性统计

1.点击分析--描述统计--频率 2. 选中分类变量&#xff0c;点击中间箭头 3.图表选中条形图&#xff0c;图表值选择百分比&#xff0c;选择确定 4.这里显示出了描述性统计的结果 5.下面就是图形&#xff0c;但SPSS画的图形都不是很好啊看&#xff0c;建议用其他软件画图&#xff…