今天和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的时候排序结束。给个图理解下:

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

直接上代码:

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

C++笔记(2)——一些语法基础知识以及基本算法知识的更多相关文章

  1. JavaSE 学习笔记之Java语法基础(二)

    1,关键字:其实就是某种语言赋予了特殊含义的单词. 保留字:其实就是还没有赋予特殊含义,但是准备日后要使用过的单词. 2,标示符:其实就是在程序中自定义的名词.比如类名,变量名,函数名.包含 0-9. ...

  2. 学习笔记_58 python语法基础

    1.python是解析型语言. 有点像javaScript在html运行一样,不需要mian函数入口,随时随地定义函数,执行函数, 执行语句,定义类型 2.python能面向对象 3.python使用 ...

  3. Java-100天知识进阶-GC算法-知识铺(五)

    知识铺: 致力于打造轻知识点,持续更新每次的知识点较少,阅读不累.不占太多时间,不停的来唤醒你记忆深处的知识点. GC算法 1.标记清除算法 优缺点:不需要额外空间,但是遍历空间花费大,而且会产生大量 ...

  4. 读书笔记(06) - 语法基础 - JavaScript高级程序设计

    写在开头 本篇是小红书笔记的第六篇,也许你会奇怪第六篇笔记才写语法基础,笔者是不是穿越了. 答案当然是没有,笔者在此分享自己的阅读心得,不少人翻书都是从头开始,结果永远就只在前几章. 对此,笔者换了随 ...

  5. python语法基础笔记

    本篇笔记基于博主自己的的学习,理解,总结所写.很多东西可能存在误解,不能保证百分之百的正确. 1. 数据表达1.1 常量和变量1.2 数据类型1.2.1 基本数据元素1.2.1.1 数字1.2.1.2 ...

  6. Spring Cloud微服务实战阅读笔记(一) 基础知识

    本文系<Spring Cloud微服务实战>作者:翟永超,一书的阅读笔记. 一:基础知识   1:什么是微服务架构     是一种架构设计风格,主旨是将一个原本独立的系统拆分成多个小型服务 ...

  7. ASP.NET MVC 学习笔记-2.Razor语法 ASP.NET MVC 学习笔记-1.ASP.NET MVC 基础 反射的具体应用 策略模式的具体应用 责任链模式的具体应用 ServiceStack.Redis订阅发布服务的调用 C#读取XML文件的基类实现

    ASP.NET MVC 学习笔记-2.Razor语法   1.         表达式 表达式必须跟在“@”符号之后, 2.         代码块 代码块必须位于“@{}”中,并且每行代码必须以“: ...

  8. JavaScript基础——JavaScript语法基础(笔记)

    JavaScript语法基础(笔记) 1.语言编码 JavaScript语言建立在Unicode字符集基础之上,因此脚本中,用户可以使用双字节的字符命名常量.变量或函数等. [示例] var 我=&q ...

  9. 新知识:JQuery语法基础与操作

     jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架).jQuery设计的宗旨是"write ...

随机推荐

  1. java Arrays源码浅出

    1.toString 返回指定数组内容的字符串表示形式. demo: 由demo可窥见Arrays.toString的所做的工作就是将数组元素转换为字符串(以逗号分割数组元素,包裹在方括号中). 源码 ...

  2. 前端每日实战:11# 视频演示如何用纯 CSS 创作一个荧光脉冲 loader 特效

    效果预览 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/pen/erRzzR 可交互视频教程 此视频是可以交 ...

  3. Linux学习-LVS跨网段DR模型和FWM多服务绑定

    一.实验环境 系统:CentOS7.6 主机:5台 (虚拟机) 客户端1台:172.16.236.134/24 (NAT网卡),网关指向 172.16.236.185/24(路由服务器) 路由服务器1 ...

  4. echart--如何将echart的配置项,放到webpack中(CHARTTEMPLATE时)

    1.假如,我们已经写好了组件,我们需要把它放入到一个环境中去 2.首先在index.html中,我们需要写一个dom结构 3.新建一个,chart.js文件(这个里面放组件的代码) 1>开始创建 ...

  5. 使用HTML和CSS来实现为文字设置图片底纹

    先看一下最终实现的效果 图中的hello是文本而不是图片 那么如何实现这种效果呢? HTML部分: 创建一个h1标签 ,标签内容为(hello).通过link标签链接外部样式表style.css. s ...

  6. 微信小程序 上拉刷新/下拉加载

    小程序项目中上拉刷新下拉加载是比较常见的需求,官方文档也提供了相当友好的API,但是因为API隐藏的比较深,文档描述也比较模糊所以也折腾了一番(官方文档),在此记录一下使用方式 onPullDownR ...

  7. 配置服务器(anaconda + jupyter + R)

    总结一下整体的流程: 1. 服务器安装anaconda 首先清华镜像站下载anaconda3. 2. 将下载好的文件用scp命令传入服务器 注意:指定端口用-P命令 p大写 本机地址 用户名@服务器I ...

  8. va_list原理及用法

    最后更新:2017-02-22 这是一篇很早很早的博客文章,虽然很基础,但是毕竟曾经历程,因此也保存下来 1. 概念 va_list 是在C语言中定义的宏,指在解决 变参问题是指参数的个数不定,可以是 ...

  9. Web网站安全

    一.防SQL注入 SQL注入,就是在web提交表单,请求参数的字符串中通过注入SQL命令,提交给服务器,从而让服务器执行注入的恶意的SQL命令的行为,是发生在开发程序的数据库层的安全漏洞. SQl注入 ...

  10. benchmarks

    系统性能测试 stream SPARK 测试 streaming benchmark https://github.com/yahoo/streaming-benchmarks