C++笔记(2)——一些语法基础知识以及基本算法知识
今天和PAT无直接相关的关系,主要是关于一些语法/算法的笔记,因为我发现自己的基础还没有打扎实,有些时候看别人的代码还会觉得一头雾水,不明白代码的含义。
一些C/C++语法
先从语法开始吧。这部分很琐碎简单,如果没兴趣的话建议跳过(毕竟其实是很基础的东西,而且主要是C)。
注意scanf("%d", &a);
中的&
,一定要有。
不要同时使用cout
、printf
,否则会出BUG。建议刷题的时候使用scanf
和printf
,更加省时。
通常<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)——一些语法基础知识以及基本算法知识的更多相关文章
- JavaSE 学习笔记之Java语法基础(二)
1,关键字:其实就是某种语言赋予了特殊含义的单词. 保留字:其实就是还没有赋予特殊含义,但是准备日后要使用过的单词. 2,标示符:其实就是在程序中自定义的名词.比如类名,变量名,函数名.包含 0-9. ...
- 学习笔记_58 python语法基础
1.python是解析型语言. 有点像javaScript在html运行一样,不需要mian函数入口,随时随地定义函数,执行函数, 执行语句,定义类型 2.python能面向对象 3.python使用 ...
- Java-100天知识进阶-GC算法-知识铺(五)
知识铺: 致力于打造轻知识点,持续更新每次的知识点较少,阅读不累.不占太多时间,不停的来唤醒你记忆深处的知识点. GC算法 1.标记清除算法 优缺点:不需要额外空间,但是遍历空间花费大,而且会产生大量 ...
- 读书笔记(06) - 语法基础 - JavaScript高级程序设计
写在开头 本篇是小红书笔记的第六篇,也许你会奇怪第六篇笔记才写语法基础,笔者是不是穿越了. 答案当然是没有,笔者在此分享自己的阅读心得,不少人翻书都是从头开始,结果永远就只在前几章. 对此,笔者换了随 ...
- python语法基础笔记
本篇笔记基于博主自己的的学习,理解,总结所写.很多东西可能存在误解,不能保证百分之百的正确. 1. 数据表达1.1 常量和变量1.2 数据类型1.2.1 基本数据元素1.2.1.1 数字1.2.1.2 ...
- Spring Cloud微服务实战阅读笔记(一) 基础知识
本文系<Spring Cloud微服务实战>作者:翟永超,一书的阅读笔记. 一:基础知识 1:什么是微服务架构 是一种架构设计风格,主旨是将一个原本独立的系统拆分成多个小型服务 ...
- ASP.NET MVC 学习笔记-2.Razor语法 ASP.NET MVC 学习笔记-1.ASP.NET MVC 基础 反射的具体应用 策略模式的具体应用 责任链模式的具体应用 ServiceStack.Redis订阅发布服务的调用 C#读取XML文件的基类实现
ASP.NET MVC 学习笔记-2.Razor语法 1. 表达式 表达式必须跟在“@”符号之后, 2. 代码块 代码块必须位于“@{}”中,并且每行代码必须以“: ...
- JavaScript基础——JavaScript语法基础(笔记)
JavaScript语法基础(笔记) 1.语言编码 JavaScript语言建立在Unicode字符集基础之上,因此脚本中,用户可以使用双字节的字符命名常量.变量或函数等. [示例] var 我=&q ...
- 新知识:JQuery语法基础与操作
jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架).jQuery设计的宗旨是"write ...
随机推荐
- Linux--用户与用户组--03
用户管理: 1.useradd 创建用户 -c 指定用户描述 -d 指定家目录 -g 指定主组 -G 指定附加组 附加组可以有多个 -s 指定shell程序 特殊的/sbin/nologin--> ...
- [转]tKC(The Keyboard Caper)的自传
每个玩儿计算机的朋友都知道破解,或多或少地使用着各种各样的破解,也就逐渐地知道了一些著名的破解团体和破解人,比如:PC(Phrozen Crew).CiA(Crackers in Action)COR ...
- 组件通信 Provide&&inject
在父组件中利用Provide 注入数据,在所有的子组件都可以拿到这个数据 可以在vue 中用来刷新页面 <!DOCTYPE html> <html lang="en&quo ...
- 前端之HTML:HTML
前端基础之html 一.初始html 1.web服务本质 import socket sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM) soc ...
- 过滤函数filter
>>> def validate(usernames): if (len(usernames) > 4) and (len(usernames) < 12): retur ...
- 错误消息对话框QErrorMessage
继承于 QDialog 样式: 这个复选框的作用:文本框中相同信息时是否再显示 import sys from PyQt5.QtWidgets import QApplication, QWi ...
- 关于ADM和高维空间下距离度量的问题
最近聆听了两个IEEE FELLOW的高论.周末北大林老师来学校做了个报告,讲了很多新的机器学习概念.但是本人更关注的低秩学习,林老师只字未提.虽然如此,林老师的论文最近还是深入研究了很多,有多少改进 ...
- 【NOIP2015模拟10.22】最小代价
前言 本来在比赛上就想到最小生成树了,但不相信这道题那么简单,然后就没有然后了... 题目 给出一幅由n个点m条边构成的无向带权图. 其中有些点是黑点,其他点是白点. 现在每个白点都要与他距离最近的黑 ...
- 【CF1247E】Rock Is Push(DP,二分)
题意:有一个n*m的方格,每一格可能为空也可能有石头,要从(1,1)走到(n,m),每次可以往右或往下走 每次走的时候都会将自己面前的所有石头向移动方向推一格,如果碰到了边界就推不过去 问方案数模1e ...
- Quadratic equation
Quadratic equation 牛客多校九B 给定 $(x+y)\%mod=b$ $(x*y)\%mod=c$ 求 $x,y$ 二次剩余 求$((x-y)^{2})\%mod = (b\time ...