今天和PAT无直接相关的关系,主要是关于一些语法/算法的笔记,因为我发现自己的基础还没有打扎实,有些时候看别人的代码还会觉得一头雾水,不明白代码的含义。

一些C/C++语法

先从语法开始吧。这部分很琐碎简单,如果没兴趣的话建议跳过(毕竟其实是很基础的东西,而且主要是C)。

注意scanf("%d", &a);中的&,一定要有。

不要同时使用coutprintf,否则会出BUG。建议刷题的时候使用scanfprintf,更加省时。

通常<stdio.h>之类的库在C++中用<cstdio>来代替,例如#include <stdio.h>换成#include <cstdio><cstdio>, <cmath>, <cstring>

数据类型 大致范围 占用位数 备注
int -2*109~2*109 32
long long -9*1018~9*1018 64 long long bignum = 123456789012345LL一定要有LL
float 6~7位精度 32 尽量别用,1位符号8位指数23位尾数
double 15~26位精度 64 1位符号11位指数52位尾数,double和float都是%f作为输出格式
char -128~+127 8 输出格式:%c
bool 0/1 1 0False/1True

强制转换类型:(int)a

设置常数:const double pi=3.14159;,推荐使用这种方式而不是直接用#define来设置常数。

注意关系运算符的写法是<=>=

逻辑运算符:&&||!

位运算符:<<>>&~|^

注意数组名称本身代表了数组第一个元素的地址,所以不需要再加取地址运算符。

如果要输入“3 4”之类用空格隔开的两个数字,两个%d之间可以不加空格,因为除了%c,scanf对其他格式的输入是以空白符为结束判断标志的,所以会自动跳过空格。

此外,%c是可以读入空格和换行的。

可以用getchar来输入字符,例如c1 = getchar();

练习

先上个输入输出的,这里是codeup题号为1000的练习,直接给出源代码:

#include <cstdio>

using namespace std;

int main(void){
int first, second;
while(scanf("%d%d", &first, &second)!=EOF){
printf("%d\n", first + second);
}
}

多点测试,要注意codeup是一次性给出所有的测试数据,是多点测试,代码必须要能够处理所有数据的输入,后台指挥运行代码一次来测试不同的数据,这点和PAT不同。

常用的math函数

这里的函数在使用的时候要记得#include <math.h>

fabs(double x)

取绝对值,例子:

int main(){
double db = -12.56;
printf("%.2f\n", fabs(db));
return 0;
}

输出的结果:

12.56

floor(double x)ceil(double x)

就是向下取整和向上取整(floor,地板,向下,ceil天花板,向上),具体用法和fabs类似,不重复了。

pow(double r, double p)

就是计算幂函数,返回值是\(r^p\),例如pw(2.0, 3.0)返回\(2^3 = 8\)。

sqrt(double x)

取开方。

log(double x)

就是取以自然对数为底的对数。

sin(double x)cos(double x)tan(double x)asin(double x)acos(double x)atan(double x)

三角函数,不解释。

round(double x)

四舍五入取整。

练习

很简单的练习,这里就不放代码了,练习地址

冒泡排序

这个是最基础的算法,本质就是交换,每次都通过交换的方式把当前剩余元素的最大值移动到一端,当剩余元素减少为0的时候排序结束。给个图理解下:

上图只是其中一次,类似上面的步骤要执行多几次,直到所有的元素都是按照从小到大的顺序排列为止。

直接上代码:

上图代码来自书《算法笔记》,作者是胡凡。强烈建议自己敲一遍,不要复制。

最新文章

  1. mysql查询本周、月、季度、年
  2. Easyui Ajax验证Form表单。。。
  3. BZOJ 1227 【SDOI2009】 虔诚的墓主人
  4. javaweb学习总结(四十二)——Filter(过滤器)学习
  5. 屠蛟之路_集木成舟_ForthDay
  6. zk 隐藏网页文件后缀
  7. HoloLens开发手记 - Unity之Spatial Sounds 空间声音
  8. [BZOJ3504][CQOI2014]危桥(最大流)
  9. SSh结合Easyui实现Datagrid的分页显示
  10. paper 55:图像分割代码汇总
  11. Quartz 2D 图形上下文栈 矩阵 裁剪
  12. js 数组排序要注意的问题,返回的值最好为 -1, 0, 1之间的值
  13. Makefile详解--隐含规则
  14. VM虚拟机下在LINUX上安装ORACLE 11G单实例数据库
  15. arcgis engine - 命令和工具
  16. LIS(最长的序列)和LCS(最长公共子)总结
  17. kibana转码显示
  18. GIT无法自动忽略YellowRV1.1.uvgui.Administrator文件的解决方法
  19. [poj 2453] An Easy Problem
  20. apache跨域

热门文章

  1. 关于&lt;input type=&quot;hidden&quot;/&gt;标签的记录
  2. CRMEasy知识库访问权限
  3. 搭建DHCP服务实现动态分配IP地址-NTP网络时间同步
  4. 前端之JQuery:JQuery属性操作
  5. QQ输入法用户评价
  6. 面试题常考&amp;必考之--js中的对象的浅拷贝和深拷贝(克隆,复制)(下)
  7. React 之React.createContext
  8. Es6 之 const关键字
  9. 10个你不得不知的WEB移动端开发的兼容问题
  10. BZOJ 3319: 黑白树 并查集 + 离线 + 思维