蓝桥杯-字符串

在这里插入图片描述
🌞团子在这里先祝大家节日快乐啦!


在这里插入图片描述

🎈1.引例

有一个类型的题目是找出输出图形的规律,然后将其实现。观察下面的图形,应该如何输出呢?

  A
 BBB

🔎运用C++的语法,我们应当如何写出这个程序呢?

#include <iostream>
using namespace std;
int main()
{
	cout << " A" << endl;
	cout << "BBB" << endl;
	return 0;
}

✅运行示例:
在这里插入图片描述
🔎如果是3行的话,应该怎么做呢?

   A
  BBB
 CCCCC
#include <iostream>
using namespace std;
int main()
{
	cout << "  A" << endl;
	cout << " BBB" << endl;
	cout << "CCCCC" << endl;
	return 0;
}

✅运行示例:
在这里插入图片描述

前面分别对应的是输出两层和三层的情况。我们输入需要输出的层数n,当n<=5的时候,我们可以枚举n的不同取值,然后分别输出。如果需要输出多层,按照上面的方法,可以完成任务,但是对应的代码量会更大,编码时间也更长。因此,当n>5的时候,我们就需要一些其他的方法来简化代码实现。仔细发现,第i层输出的前面的空格数和字符的个数都是有规律的,我们可以根据ni计算出来。对应输出的字符的ASCII码值是'A'+i-1,其中'A'表示字符AASCII码值。然后我们就可以用循环控制输出。这里给大家看一看ASCII码表:
在这里插入图片描述

🎈2.例题一

按照题目描述,输出字母三角形:

样例输入1:
 2
样例输出1:
  A
 BBB
样例输入2:
 3
样例输出2:
   A
  BBB
 CCCCC
#include <iostream>
#include <string>
using namespace std;
int main()
{
	int n;
	cin >> n;
	for (int i = 1; i <= n; i++)
	{
		string space = string(n - i, ' ');
		string ch = string(2 * i - 1,'A' + i - 1);
		cout << space + ch << endl;
	}
	return 0;
}

✅运行示例:
在这里插入图片描述

🎈3.例题二

这次我们输出一个稍微复杂的三角形,输入一个大写字母(A-Z)或者一个数字(1~9),如果输入的是F,那么输出的是:

     A
    ABA
   ABCBA
  ABCDCBA
 ABCDEDCBA
ABCDEFEDCBA
#include <iostream>
#include <string>
using namespace std;
int main()
{
	char c;
	cin >> c;
	if (c >= 'A' && c << 'Z')
	{
		for (int i = 1; i <= c - 'A' + 1; i++)
		{
			for (int j = 1; j <= c - 'A' + 1 - i; j++)//每行空格数的总行数-所在行数
			{
				cout << " ";
			}
			for (int j = 1; j <= i; j++)
		    {
				cout << (char)('A' + j - 1);//正向输出字符个数等于行数
		    }
			for (int j = i - 1; j >= 1; j--)//逆向输出字符个数等于行数减1
			{
				cout << (char)('A' + j - 1);
			}
			cout << endl;
		}
	}
	else
	{
		for (int i = 1; i <= c - '1' + 1; i++)
		{
			for (int j = 1; j <= c - '1' + 1 - i; j++)//每行空格数的总行数-所在行数
			{
				cout << " ";
			}
			for (int j = 1; j <= i; j++)
			{
				cout << (char)('1' + j - 1);//正向输出字符个数等于行数
			}
			for (int j = i - 1; j >= 1; j--)//逆向输出字符个数等于行数减1
			{
				cout << (char)('1' + j - 1);
			}
			cout << endl;
		}
	}
	return 0;
}

✅样例输出:
在这里插入图片描述
在这里插入图片描述

🎈4.例题三

小蓝迷恋上了《我的世界》,在游戏里可以任意开发各种宏伟建筑。有一天他发现一块荒地上有很多宝藏,想在土地上建一栋房子把宝藏包围起来。假设地图是一个n行m列的方格地图,地图上每一个格子*表示一个宝藏。

比如22列的地图上:
**
**
那么需要建的房子如下:
 +-+-+
 |*|*|
 +-+-+
 |*|*|
 +-+-+
#include <iostream>
#include <string>
using namespace std;
int main()
{
	int n, m;
	cin >> n >> m;
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= m; j++)
		{
			cout << "+-";
		}
		cout << "+" << endl;
		for (int j = 1; j <= m; j++)
		{
			cout << "|*";
		}
		cout << "|" << endl;
	}
	for (int i = 1; i <= m; i++)
	{
		cout << "+-";
	}
	cout << "+" << endl;
	return 0;
}

✅运行示例:
在这里插入图片描述

🎈5.字符串

"hello world.\n"

向上面这种由双引号引起来的一串字符称为字符串字面值,或者简称为字符串。

字符串的结束标志是一个\0的转义字符,在计算字符串长度的时候\0只是作为结束的标志,不算作字符串内容。
✅详细关于字符串的知识请跳转到这篇博客: 字符串


很多情况下,都要对字符串进行复制、剪切、比较等操作,可以用循环来操作,但是会太繁琐,这里可以使用字符串操作的库函数。C/C++的字符串处理的相关函数在string.h头文件中。

🔭5.1字符串复制

C/C++中函数原型char *strcpy(char *destin,char *source),将source字符串复制到destin.

🔎C/C++语言示例程序:

#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
	char name[10];
	const char* str = "Justic";
	strcpy(name, str);
	cout << name << endl;
	return 0;
}

✅运行示例:
在这里插入图片描述

🔭5.2字符串拼接

C/C++中函数char *strcat(char *dest,char *source),将source字符串拼接到dest后面。
注意:dest必须有足够的空间来容纳拼接出字符串。

🔎C/C++语言示例程序:

#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
	char str1[15]= "Hello";
	char str2[7] = " World";
    strcat(str1,str2);
	cout << str1 << endl;
	return 0;
}

✅运行示例:
在这里插入图片描述

🔭5.3字符串的比较

C/C++函数int strcmp(char *str1,char *str2),从第一个字符开始逐字符比较两个字符串,如果两个字符完全相同,则返回0,如果第i位不相等,返回srt1[i]-str2[i].

🔎C/C++语言示例程序:

#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
	const char* p1 = "abcde";
	const char* p2 = "abcdefd";
	const char* p3 = "djhfjhdjfh";
	const char* p4 = "vhdhuf";
	cout << strcmp(p1, p2) << endl;
	cout << strcmp(p1, p3) << endl;
	cout << strcmp(p1, p4) << endl;
	cout << strcmp(p3, p2) << endl;
	return 0;
}

✅运行示例:
在这里插入图片描述

好啦,关于字符串的知识到这里就先结束啦,后期会继续更新学习蓝桥杯的相关知识,欢迎大家持续关注、点赞和评论!❤️❤️❤️

在这里插入图片描述

  • 74
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 65
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 65
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一口⁵个团子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值