蓝桥杯备赛(语言基础1)

·c++代码的格式与语法基础

手撕五份代码

代码1(数组)

若数组为局部数组,则不会初始化为0;

代码2(typedef)

代码3(数组)

代码4(交换变量)

变量5(判断)

如果if()后面没有{},则只执行一条语句

·输入输出

printf和scanf

注意:%s遇到空格或回车会停下

解决方法:

cin和cout

以下代码默认没有保留小数点,即精确到最后一个非0的位置

解决方法:

解决cin输入字符串遇到空格就结束的方法:

取消同步流

由于cin和cout需要自动判断变量类型的内部原因,读写效率比scanf和printf效率更低,当数据量较大时,可能导致程序运行超时

我们可以通过取消同步流来加速cin和cout,加速后效率相差无几

·string的使用

string简介

string是C++标准库的重要组成部分,主要用于字符串处理

使用string库需要在头文件中包括该库#include<string>,如果前面已经有了万能头文件,则不需要。
string与char[]不同,string实现了高度的封装,可以很方便地完成各种字符串的操作,比如拼接、截取、匹配等等。

1)字符串管理:string封装了字符串的存储和管理。它自动处理字符串的内存分配和释放,避免了手动管理内存的麻烦。
2)动态大小调整:string可以根据需要自动调整字符串的大小。在添加或删除字符时,string会自动调整内部的存储容量,确保足够的空间来容纳字符串。
3)安全性:string提供了一些方法来确保字符串的安全性。例如,它提供了越界访问检查,以避免访问超出字符串范围的字符。
4)迭代器支持:string支持迭代器,可以使用迭代器遍历字符串中的字符,进行字符级别的操作。
5)兼容性:string是C++标准库的一部分,因此在C++中广泛使用,并且与其他标准库组件和
 C++语言特性兼容。

string的声明和初始化

注:若头文件后面已经写了using namespace std; 则不需要写 std:: ,当然,即使不写std::,string的首字母也不需要大写

substr(起始位置,长度)

string(个数,字符)

输出:空 ,Hello world! ,Hello world! , Hello , Hello , AAAAA

之前学过我们可以cin >> str 来输入字符串,但是遇到空格会停止,所以我们需要用getline(cin,s)

string的基本操作

在c++中,std::string类提供了一个成员函数c_str(),用于返回一个指向以空字符结尾的c风格字符串(即const char*类型)

在进行printf输出时,需要将string转换成c风格的字符串进行输出

str.replace(字符串起始位置,字符串长度,“替换的字符串”)

string重载了不等号,所以可以直接使用s1<s2的方式来比较string的大小,比较的规则是按照字典序大小进行比较。
字典序的比较方法是从小到大一个一个比较,一旦遇到不相等的字符就确定大小关系。
例如:
 aaaa<bbbb
 azz<baaa
 azzzzzzzzzzzzz<b

lanqiao == lanqiao

各种基本操作

常用的遍历string的方法有两种:

1)循环枚举下标

2)auto枚举(其中&表示取引用类型,如果对 i 修改将会改变原来的值)

第一个for循环 相当于复制了s中的字符当作i

第二个for循环 就是s中字符本身,相当于引用

例题

解法1:

解法2:

解法3:

·排序

sort简介

sort函数包含在头文件<algorithm>中。
在使用前需要#include <algorithm>或使用万能头文件:#include<bits/stdc++.h>。

sort是C++标准库中的一个函数模板,用于对指定范围内的元素进行排序。
 sort算法使用的是快速排序(QuickSort)或者类似快速排序的改进算法,具有较好的平均时间复杂度,一般为O(nlogn)。

sort的用法

(1)

sort(起始地址,结束地址的下一位,*比较函数)

默认从小到大排列

sort(a + 1, a + n + 1) 即 a[1] 到 a[n+1], [1,n + 1)左闭右开

(2)

sort(起始地址, 结束地址下一位, *比较函数)

自定义比较函数

sort默认使用小于号进行排序,如果想要自定义比较规则,可以传入第三个参数,可以是函数或lambda(匿名函数)

(1)

const int &u 可以写成 int u

(2)

(3)结构体可以将小于号重载后进行排序,当然用前面的方法也是可行的

注意:只有一个参数

例题

解法1:

解法2:

解法3:

对“ \n"[i == n]的自我理解:相当于两个字符,,[]是对前面的字符取一个下标,i = n 是一个下标,然后i = 1 (true) ,输出 \n,不是true就输出空格

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值