蓝桥杯备赛笔记Day1-Day3

蓝桥杯备赛笔记:

 Day1.利用sort函数进行排序:

头文件:#include<algorithm>就是平常的算法头文件(或者使用万能头文件<algorithm>;

属于普通的库函数,时间复杂度一般为O(nlogn)。

操作样例:sort(a,a+n,*cmp)即(起始地址,结束地址的下一位,*比较函数)(在特殊容器中采用(迭代器的begin(),迭代器的end(),比较函数)的形式)

75593a4cf2a34074b5dd7a0f9f9d386e.png

作用:对选中区域内的数据进行排序,排序方法采用cmp(自定义排序方法),若无特殊的排序方法要求则会默认按照从小到大的顺序进行排序;

2.自定义排序(cmp函数):

定义:为管理员构造的函数,为bool类型的排序函数;

操作方法:

bool(a,b){

return a<b;}

0dcc76167df24dfa955f65b0d78ccc66.png

3.对结构体中的元素进行排序:

合理的利用sort函数可以通过定义好的排序准则(cmp)对已经定义过的结构体函数中的元素进行排序,

举例如下:

6c21cc11caf44e8197c3dd12283b9eca.png

图例是利用sort函数对student结构体中的成绩这一变量进行排序,在利用sort函数对结构体进行排序时,一定要声明排序准则。否则在运行时会报出未声明的方法这一错误;

 Day2

输入与输出的精细化分类:

在c++中cin和cout的输入输出效率很低(因为需要自动判断变量类型),远低于c中的scanf和printf,并且不能对数组中的数据进行连续输入。但我们有一种办法:通过取消同步流使得c++std标准输入具有和scanf和printf同样的输入效率。

示例代码:ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);

//在使用此代码对于数据流进行解除禁制后,可以对数组进行字符串的输入。

示例代码:

#include<iostream>

using namespace std;

int main(){

ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);

char chararray;

cin>>chararray ; **//此时用cin就可以正常的对字符数组进行输入了**

cout<<chararray;

}

演示输入:hello world;

输出:753420aa4fd8469baafa443efca2d957.png

注:使用cin输入时读到\n会直接结束读取;

**但是如果想要不结束读取的话可以 采用正则表达式或get line进行排除**:

方法如下:

1.getline ()

2.cin>>"^\n,a";

 Day3:二分查找与大小写转换

 1.二分查找:

使用函数:c++自带的库函数(用<iostream>或者<bits/stdc++.h>)

查找要求:

1.查找对象必须为数组或可以转化为数组(如vector容器)

2.数组中的元素必须单调(单调递增或者单调递减都可以,但一般采用单调递增形式)

3如何利用代码实现数组中的二分查找?

1.采用binary_search函数:

binary_search函数用来进行二分查找,通常情况下返回的值为bool类型,用来表示目标是否存在于队列之中。

代码实现:

```

#include<bits/stdc++.h>

using namespace std;

int main()

{

    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);

  vector<int>vc={1,567567,234234,6786734,345345,1223,553,456};

  sort(vc.begin(),vc.end());

  int x;

  cin>>x;

  cout<<(binary_search(vc.begin(),vc.end(),x))<<endl;

}

运行结果如下:

9f3b86ca853545e489605e286565adf6.png

2.采用lower_bound或者upper_bound函数进行查找:

lower_bound:在数组中进行对输入目标的查找,查找时查找到第一个大于等于此数的数在数组中的位置并且返回

upper_bound:在数组中进行对输入目标的查找,查找时查找到第一个大于此数的数在数组中的位置并且返回

若没有找到位置的话则会返回数组的下一位,容器则是返回.end()。

使用前提:数组为***非降序**数组

代码实现如下:

```
#include<bits/stdc++.h>
using namespace std;
int main()
{
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  vector<int>vc={1,567567,234234,6786734,345345,1223,553,456};
  sort(vc.begin(),vc.end());
  int x;
  cin>>x;
  cout<<(lower_bound(vc.begin(),vc.end(),x)-vc.begin())<<endl;
}
```

986984fbdc0a444fb21cf1530ab23a3c.png

输入:

```
345345
```

5553454523954b5cae9596649e78d305.png

 2.大小写转换:

###### model1:大小写的检查与查找:

采用函数:islower/isupper函数

采用头文件:<cctype>或万能头文件<bits/stdc++.h>

函数作用:检查所指定的内容是否为函数所指定格式并返回一个bool类型的值:

如:islower用来检查格式是否为小写,isupper用来检查格式是否为大写。

代码实现:

```
#include<bits/stdc++.h>
using namespace std;
int main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    char c;
    cin>>c;
    if(islower(c))
        cout<<"is a lowercase letter"<<endl;
    else
        cout<<"is a uppercase letter"<<endl;
}
```

61663ceddbb64b64895c2e571d6cc73f.png

输入:

```c++
a
```

输出结果:

```c++
is a lowercase letter
```

​    c6e159a88d3740c88b965ad996313ea5.png

###### model2:格式大小写的转换:

采用函数名:tolower/toupper函数

采用函数所需的头文件:c++标准库函数

函数作用:对指定的函数进行大小写的转换(tolower指转化为小写,toupper指转化为大写)

###### *注意:如果原字符已为大写/小写则操作不生效。

代码实现:

```
#include<bits/stdc++.h>
using namespace std;
int main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    char c;
    cin>>c;
    c=toupper(c);

cout<<c;}

输入:a

输出:A
 

  • 16
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值