Pat最终题目整理(菜鸟级别)

一:几个函数

①Reverse()函数; stoi将字符串类型转为int型 ;to_string关键字

头文件:#include<algorithm>;

#include

usingnamespace std;

intmain()

{

      int a,b;

      cin>>a>>b;

    string c;

stringresult=to_string(a*b);

reverse(result.begin(),result.end());

}

②Abs函数() 输出绝对值

头文件#include<algorithm>

C=(double)abs(A-B);

③Set的insert()函数

C++ 有这样一个容器,即 STL 中的 set (可以百度一下是什么东西),set 的特性是其内所包含的元素的值唯一,利用这一特性,只要输出最终set 中元素的个数即可

头文件#include<set>

#include<set>

usingnamespace std;

intmain(){

      set s;

      int n;

      cin>>n;

      for(int i=1;i<=n;i++)

              s.insert(i/2+i/3+i/5);

      cout<

      return 0;

}

④strlen计算长度函数

sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以'\0'结尾的。

scanf("%s", str);

 int len = strlen(str);

⑤德才论中的sort函数

头文件:#include<iostream>

排序条件不够可以在sort函数末尾加上排序条件;

利用comp函数修改条件 但记住最后一定加上else return false;

判断条件:第一个true不满足条件向下继续判断;

bool comp(Stu x, Stu y) {

    if (x.s1 + x.s2 > y.s1 + y.s2) return true;

    else if (x.s1 + x.s2 == y.s1 + y.s2 && x.s1 > y.s1) return true;

    else if (x.s1 + x.s2 == y.s1 + y.s2 && x.s1 == y.s1 && x.num < y.num) return true;

    else return false;

}

sort(stu1.begin(), stu1.end(), comp);

⑥pow函数

头文件#inluude<math.h>

功能:计算x的y次幂 pow(a,b)

一下三个函数以这个题为例子:

#include<iostream>
#include<algorithm>
#include<math.h>
using namespace std;
int main()
{
string a,b;
char da,db;
int m,n;
int i,j,s1=0,s2=0;
cin>>a>>da>>b>>db;
i=count(a.begin(),a.end(),da);
j=count(b.begin(),b.end(),db);
m=da-'0';
n=db-'0';
for(int p=0;p<i;p++)
s1+=m*pow(10,p);
for(int q=0;q<j;q++)
s2+=n*pow(10,q);
cout<<s1+s2;
return 0;
}

⑦begin()和end()函数

头文件#include<string>?

string a;
int sum=count(a.begin(),a.end(),tt)

⑧count()函数

头文件#include<algorithm>

输出一个数在string里出现的次数,至于这个题没定义迭代器,为喵我布吉岛。。。。

string a;
int sum=count(a.begin(),a.end(),tt);

⑨swap()函数

头文件#include<iostream>//自带的???

在pat里可以用于比较三个数大小

代码如下:

#include <iostream>
#include <iomanip>
using namespace std;
void swap(int& a,int& b)
{
int temp;
temp = a;
a =b;
b =temp;
}
void intSort(int& num1, int& num2, int& num3, int& num4)
{
int temp;
if (num1 <num2)
{
swap(num1,num2);
}
if (num3 <num4)
{
swap(num3,num4);
}
if (num1<num3)
{
swap(num1,num3);
}
if (num2<num4)
{
swap(num2,num4);
}
if (num2<num3)
{
swap(num2,num3);
}
} int main()//这是一个IBM在面试时的一道算法题,就是用最少的时间完成排序
{int cha;
int result1,result2;
int a1,b1,c1,d1;
//a千位 cin>>cha;
while(cha!=6174)
{ a1=cha/1000;
b1=(cha/100)%10;
c1=(cha/10)%10;
d1=cha%10; intSort(a1,b1,c1,d1);

⑩setw()  和setfill() 函数

头文件:#include<iomanip>

setw()用于确定输出位数,setfill();貌似现在只有补0操作。

cout<<setw(4)<<setfill('0')<<result1<<" "<<"-"<<" "<<setw(4)<<setfill('0')<<result2<<" "<<"="<<" "<<setw(4)<<setfill('0')<<cha<<endl;//}
else
{
cout<<setw(4)<<setfill('0')<<result1<<" "<<"-"<<" "<<setw(4)<<setfill('0')<<result2<<" "<<"="<<" "<<setw(4)<<setfill('0')<<cha<<endl;//}
break; }

⑪vector容器

头文件#include<vector>

接触时间这么长了,估计不会多写了吧;

掌握几个vector函数吧
1.push_back() //插入,不多说了
2.pop_back() //pat里好像没用到过
3.insert() //没用到过,惭愧
4.find() //还是没用过 惭愧
注意下 有的pat定义vector容器是不给出容器大小会显示段错误
如:
int n;
cin>>n;
vector<string> a(n);

⑫数组定义的初始化

写着写着就成了注意点了
那么
int a[10]; 和 int a[10]={0};
不一样写法有事候会在pat里报错,是段错还是答案错误来着。

⑬strcpy()函数

头文件: #include<string>

c语言标准的库函数,是 str copy的缩写;

char * strcpy(char * strDest,const char * strSrc);

对此做出说明的是pat人口普查题目:

if(birth < maxAge){ //得到最年长
strcpy(max_name,name);
maxAge = birth;
}
if(birth > minAge){ //得到最年轻
strcpy(min_name,name);
minAge = birth;
}

返回的是 char* 类型。

⑭map容器

头文件:#include<map>

一定记住map定义形式

map<int,string> //尖括号里的类型不能互换。

还有可以定义如同这种 map<int,vector<int>> m;  注意这是定义别出现vector名字。

map<int,vector<int>> 中可以对map进行push_back操作,如果存在a[t1] ,获取到的是map的mapped_type类型,

而vector正好可以提供所需函数。

但在map<int,int>中则不能。

⑮关于pat的输入  ps//小白专用

int k;//输入k行
1.for(int i=0;i<k;i++) {}
2.while(k--) {}

⑯STL中set<>容器

今天做了PAT1064,才发觉set<>容器好重要(哭)。

总结下吧(也不是完全版)

1.set中的插入是insert()而不是push_back() 考前提醒自己注意下,

    因为set不支持有重复元素,故插入的set()容器中不存在重复的关键值。

2.set遍历 先定义迭代器  注意迭代器写法  set<int>::iterator it

set<int> a;

在进行遍历输出时

for(it=a.begin();it!=end();it++)
{ if(it==begin())
{
cout<<*it;
}
else
{
cout<<" "<<*it;
} }

再练习注意与上边三的题目相似。

⑰检查输入的合法性

关于格式输入。getchar() 有时要与getline()一同使用。

非空字符串,每个字符串以回车结束,但是字符串里面可能会有空格,所以不能直接用cin,要用getline接收一行字符。在接收完n后要getchar()读取一下换行符才能用getline,否则换行符会被读进getline中。

#include <iostream>
#include<cstdio>
#include<string.h>
using namespace std;
int main(){
int N;
cin>>N;
getchar();
string password;
//while(N--)
for(int i=0;i<N;i++)
{
getline(cin,password);
int len=password.length();
if(len<6){
printf("Your password is tai duan le.\n");continue;
}
else{
int flag=1;int num=0;int letter=0;int success=0;
for(int i=0;i<len;i++)
{
if(password[i]>='0'&&password[i]<='9')num=1;
else if((password[i]>='A'&&password[i]<='Z')||(password[i]>='a'&&password[i]<='z'))letter=1;
else if(password[i]!='.'){
flag=0; break;
} }
if(flag==0)printf("Your password is tai luan le.\n");
else if(letter==0){printf("Your password needs zi mu.\n");flag=0;}
else if(num==0){printf("Your password needs shu zi.\n");flag=0;}
else if(flag==1)printf("Your password is wan mei.\n");
} } }

这个题自己写的调用外部函数弄得输出乱七八糟,还是直接写在main()里边简练。

⑩⑧有关密码的输入

有关密码的输入感觉都是用两个函数

getchar()
getline(cin,str)

再例如试密码一题。

想起来还有给定的输入 如年月日类型:1998-2-28,利用scanf输入简单,但是使用c++时要定义字符。

char c;//定义了字符类型才能输入"-"
int year,month,day;
cin>>year>>c>>month>>c>>day;

下边来看试密码这个题吧 嘤!

先比较下pat1067试密码和pat1081检查密码的输入要求

1067输入在第一行给出一个密码(长度不超过 20 的、不包含空格、Tab、回车的非空字符串)和一个正整数 N(≤ 10),分别是正确的密码和系统允许尝试的次数。随后每行给出一个以回车结束的非空字符串,是用户尝试输入的密码。输入保证至少有一次尝试。当读到一行只有单个 # 字符时,输入结束,并且这一行不是用户的输入。

1081本题要求你帮助某网站的用户注册模块写一个密码合法性检查的小功能。该网站要求用户设置的密码必须由不少于6个字符组成,并且只能有英文字母、数字和小数点 .,还必须既有字母也有数字。输入第一行给出一个正整数 N(≤ 100),随后 N 行,每行给出一个用户设置的密码,为不超过 80 个字符的非空字符串,以回车结束。

两个题都要求是非空字符串 回车结束 然而1061要求的更明确  不包括回车 就得用getchar()函数;

但是即使要求不包括空格,还是得用getline(),不用会报错,我应该没有理解错吧┭┮﹏┭┮

#include<iostream>
#include<string>
using namespace std;
int main() {
string answer;
int n;
int sum=0;
cin>>answer>>n;
string test;
getchar();//吸收回车
//cin>>test;
getline(cin,test);
while(test!="#") {
sum++; if(test==answer) {
cout<<"Welcome in"<<endl;
break;
}
else
{ cout<<"Wrong password: "<<test<<endl;
if(sum==n)
{
cout<<"Account locked"<<endl;
break;
}
}
getline(cin,test);★
}
return 0;
}

标★的地方要尤其注意。。。题目没给出连续输入,不能用for循环进行直接输入,需要在while循环末尾({ }内注明下一个输入)

还有在while判断条件中 while(str!=“#”)//要用双引号。

⑩⑨判断两个字符串相等

不要逐个字符来判断了。直接相等就ok了

给出例子:

string m;
string n;
if(m==n)
{
cout<<"我爱pat考试";
}
else
{
cout<<"一定要通过考试";(不要给自己立flag啊!!!)
}

当然字符串连接也有简便方法:

#include<iostream>
#include<string>
using namespace std;
int main()
{
string m;
string n;
string mn; cin>>m>>n;
mn=m+n;
cout<<mn;
}

结果如下:

②⑩ASCALL码

0~9 是 48~57
a~z 是 97~122
A~Z 是 65~90     大写字母与小写字母差32,用字符char类型加减32就可以。至于为啥不是差26。。表里有说明

#include<iostream>
int main(){
char a;
cin>>a;
if(a>=65&&a<=90)
cout<<"a是大写字母";
if(a>=97&&a<=122)
cout<<"a是小写字母";
}

再附上更详细的大小写转化方案:https://blog.csdn.net/qian2213762498/article/details/79553372

②⑪出现次数统计

明天要考首次pat了,不会过的吧。。。毕竟自己经验还是太少了,只靠这一个月马马虎虎敲代码。。还是凉拌吧

我好像是最菜的博主了呢。如果没错的话,这应该是以后一个月最后一次pat更新了。

随之结束的是大三上学期。。。由于自己大一只是学习下计算机死知识,完全忽略编程,接着大二准备各种考证,计算机算是白瞎了吧,希望毕业前能把pat过了。(祈祷)

好了废话不多说了。看下pat1042吧。

大写字母转成小写字母: 需要加上32;  相反小写转大写相应减去32

#include <iostream>
#include <string> using namespace std; int main()
{
int num[128]={0};
string c;
getchar();
getline(cin,c);
int len=c.length();
for(int i=0;i<len;i++)
{
if( c[i]>='a' && c[i]<='z')
num[c[i]]++;
else if(c[i]>='A' && c[i]<='Z')
{
c[i]=c[i]+32;
num[c[i]]++;
}
}
int max=0;
char ch;
for(int i='a';i<='z';i++)
{
if(num[i]>max)
{
max=num[i];
ch=char(i);
}
}
cout<<ch<<" "<<max<<endl; return 0; }

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

月光还是少年的月光,九州一色还是李白的霜

pat题目整理的更多相关文章

  1. Noip往年题目整理

    Noip往年题目整理 张炳琪 一.历年题目 按时间倒序排序 年份 T1知识点 T2知识点 T3知识点 得分 总体 2016day1 模拟 Lca,树上差分 期望dp 144 挺难的一套题目,偏思维难度 ...

  2. NOIp初赛题目整理

    NOIp初赛题目整理 这个 blog 用来整理扶苏准备第一轮 csp 时所做的与 csp 没 有 关 系 的历年 noip-J/S 初赛题目,记录了一些我从不知道的细碎知识点,还有一些憨憨题目,不定期 ...

  3. BZOJ 题目整理

    bzoj 500题纪念 总结一发题目吧,挑几道题整理一下,(方便拖板子) 1039:每条线段与前一条线段之间的长度的比例和夹角不会因平移.旋转.放缩而改变,所以将每条轨迹改为比例和夹角的序列,复制一份 ...

  4. 第八届蓝桥杯c/c++省赛题目整理

    第一题 标题: 购物单 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞. 这不,XX大促销又来了!老板夫人开出了长长的购物单,都 ...

  5. PAT题目AC汇总(待补全)

    题目AC汇总 甲级AC PAT A1001 A+B Format (20 分) PAT A1002 A+B for Polynomials(25) PAT A1005 Spell It Right ( ...

  6. shell练习--PAT题目1003:我要通过!(成功案例)

    “答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”. 得到“答案正确”的条件是: ...

  7. shell练习--PAT题目1001:卡拉兹(Callatz)猜想(失败案例)

    卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 ( 砍掉一半.这样一直反复砍下去,最后一定在某一步得到 n=1.卡拉兹在 1950 年的世界 ...

  8. ACM - 动态规划专题 题目整理

    CodeForces 429B  Working out 预处理出从四个顶点到某个位置的最大权值,再枚举相遇点,相遇的时候只有两种情况,取最优解即可. #include<iostream> ...

  9. 【Android进阶】Android面试题目整理与讲解(一)

    这一篇文章专门整理一下研究过的Android面试题,内容会随着学习不断的增加,如果答案有错误,希望大家可以指正 1.简述Activity的生命周期 当Activity开始启动的时候,首先调用onCre ...

  10. 【转载】最全的面试题目整理(HTML+CSS部分)

    转载自 知乎 @西点王子 https://www.zhihu.com/people/F211/answers 1. 常用那几种浏览器测试?有哪些内核(Layout Engine)? (Q1) 浏览器: ...

随机推荐

  1. JS 开始时间/结束时间和当前时间进行比较

    项目需求:到截止日期一些功能不可以再使用,那么需要判断当前时间与截止时间进行比较,记录一下吧 注意: 1.橙色字体的代码换成你自己的变量 2. .valueOf()其实就是将中国时间转为时间戳 3.截 ...

  2. 阿里云服务器 jdk1.8 安装配置

     阿里云服务器 jdk1.8 安装配置 下载/上传 jdk安装包 解压到指定目录 重命名解压后的文件夹名称 配置环境变量 验证JAVA环境是否安装成功 step 0.安装包准备 1 wget --no ...

  3. Linux安装Jemalloc

    在安装Jemalloc之前首选安装解压工具,Jemalloc源来自Github一般服务器很少安装bzip2解压 bzip2安装命令 yum -y install bzip2 CnetOS完整安装Jem ...

  4. 蓝牙mesh组网实践(常见调试问题整理)

    目录 ①初始化及配网过程中出错 ②发送模型返回错误代码 ③发送方成功,接收方丢包 ①初始化及配网过程中出错 1-1.返回错误代码-16,表示给dataflash分配的单个扇区的空间不够,需要加大CON ...

  5. hive知识点总结

    hive知识点总结 1.什么是HIVE? 1.hive是hadoop生态圈的一个工具,提供一种结构化查询语言,可以查询HDFS或者其他文件系统上的文件. 2.hive操作: 1.hive一次使用命令: ...

  6. rocketmq-exporter部署(干货)

    简单介绍 rocketmq_exporter是prometheus提供的用于监控rocketmq运行状态的exporter 环境 系统 版本 CentOS 7.6.1810 (Core) CPU/内存 ...

  7. C# 读取串口设备列表

    ManagementObjectSearcher 解析不到头文件,需要手动 Add Referance 需要添加引用:System.Management,然后引入命名空间:using System.M ...

  8. 负载均衡集群ipvsadm常见参数以及基本用法

    ---- 固定调度 rr:论调 wrr:加权论调 weight,加权 sh:source hash ,源地址hash 动态调度lc:最少链接 active*256+inactivewlc:加权最少链接 ...

  9. Gitbook部署之nodejs踩坑

    title: Gitbook部署之nodejs踩坑 date: 2020-11-06 16:34:30 summary: Gitbook部署和NVM的使用.hexo失效 Gitbook部署之nodej ...

  10. 实验5:开源控制器实践POX

    一.基础实验 建立拓扑: sudo mn --topo=single,3 --mac --controller=remote,ip=127.0.0.1,port=6633 --switch ovsk, ...