[置顶] 基础知识(1)
2017-07-22 18:15
127 查看
基本数据类型的范围
整型 int
-2^31~(2^31-1) -2e9~(2e9)
long long -2^63~(2^63-1)-9e18~(9e18)
浮点型 float
-2^128~2^128 实际精度6~7位
double
-2^1024~2^1024 实际精度15~16位
字符型 char
-128~127 -128~127
布尔型 bool
0(false) or 1(true) 0(false) or 1(true)
位运算符
位运算符优先级极低(小于算术运算符,小于比较运算符)所以使用时要注意加括号
INF
因为int的上限是2^31-1,INF=(1<<31)-1 或 0x3fffffff
scanf
除了%c外,scanf对其他格式的输入输出是以空白符(即 空格、Tab)为结束判断标志的
字符数组%s读入的时候是以空格跟换行为读入结束的标志
double
double类型的变量,输出格式为%f,在scanf中是%lf
%0md
当变量不足m位时,将在前面补足足够数量的0而不是空格
%.mf
使浮点数保留m位小数输出,此时使用“四舍六入五成双”,许多题目要求浮点数的输出保留xx位小数就是用这个格式进行输出
4舍6入5成双”这里“四”是指≤4 时舍去,"六"是指≥6时进上,"五"指的是根据5后面的数字来定,当5后有数时,舍5入1;当5后无有效数字时,需要分两种情况来讲:①5前为奇数,舍5入1;②5前为偶数,舍5不进.
round(double x)
在math.h里面,用于将double类型变量x进行四舍五入,返回类型也是double型,需要进行取整
数组
如果数组大小较大(大概1e6级别),则需要将其定义在主函数外面,否则会使程序异常退出,原因是函数内部申请的局部变量来自系统栈,允许申请的空间较小;而函数外部申请的全局变量来自静态存储区,允许申请的空间较大
memset
memset(数组名,值,sizeof(数组名));
按字节赋值,其头文件是string.h
如果要对数组赋其他数字,需要用fill函数
sscanf sprintf
均在头文件stdio.h下
sscanf将字符数组中的内容以%d的格式写入到n中(从左至右)
--------------------------------
Process exited after 0.1849 seconds with return value 0
sprintf是把n以%d的格式写到字符数组中(从左至右)
--------------------------------
Process exited after 0.1848 seconds with return value 0
引用 (C++)
对引用变量的操作就是对原变量的操作
只需要在函数的参数类型的后面加个&就可以了
--------------------------------
Process exited after 0.1152 seconds with return value 0
详解:
点击打开链接http://www.cnblogs.com/Mr-xu/archive/2012/08/07/2626973.html
点击打开链接http://blog.csdn.net/webscaler/article/details/6577429
点击打开链接http://blog.csdn.net/xiao__tian__/article/details/51814617
浮点数的比较
因为浮点数有时会损失精度,所以如果一个数a落在了[b-eps,b+eps]的区间中时,就应当判断a==b成立
经验表明eps取1e-8是一个合适的数字
π=arccos(-1)
--------------------------------
Process exited after 0.08363 seconds with return value 0
多点测试
摘自《算法笔记》胡凡 曾磊 主编
整型 int
-2^31~(2^31-1) -2e9~(2e9)
long long -2^63~(2^63-1)-9e18~(9e18)
浮点型 float
-2^128~2^128 实际精度6~7位
double
-2^1024~2^1024 实际精度15~16位
字符型 char
-128~127 -128~127
布尔型 bool
0(false) or 1(true) 0(false) or 1(true)
位运算符
位运算符优先级极低(小于算术运算符,小于比较运算符)所以使用时要注意加括号
INF
因为int的上限是2^31-1,INF=(1<<31)-1 或 0x3fffffff
scanf
除了%c外,scanf对其他格式的输入输出是以空白符(即 空格、Tab)为结束判断标志的
字符数组%s读入的时候是以空格跟换行为读入结束的标志
double
double类型的变量,输出格式为%f,在scanf中是%lf
%0md
当变量不足m位时,将在前面补足足够数量的0而不是空格
%.mf
使浮点数保留m位小数输出,此时使用“四舍六入五成双”,许多题目要求浮点数的输出保留xx位小数就是用这个格式进行输出
4舍6入5成双”这里“四”是指≤4 时舍去,"六"是指≥6时进上,"五"指的是根据5后面的数字来定,当5后有数时,舍5入1;当5后无有效数字时,需要分两种情况来讲:①5前为奇数,舍5入1;②5前为偶数,舍5不进.
round(double x)
在math.h里面,用于将double类型变量x进行四舍五入,返回类型也是double型,需要进行取整
数组
如果数组大小较大(大概1e6级别),则需要将其定义在主函数外面,否则会使程序异常退出,原因是函数内部申请的局部变量来自系统栈,允许申请的空间较小;而函数外部申请的全局变量来自静态存储区,允许申请的空间较大
memset
memset(数组名,值,sizeof(数组名));
按字节赋值,其头文件是string.h
如果要对数组赋其他数字,需要用fill函数
sscanf sprintf
均在头文件stdio.h下
sscanf将字符数组中的内容以%d的格式写入到n中(从左至右)
#include<stdio.h> int main() { char str[100]="123"; int n; sscanf(str,"%d",&n); printf("%d",n); return 0; }123
--------------------------------
Process exited after 0.1849 seconds with return value 0
sprintf是把n以%d的格式写到字符数组中(从左至右)
#include<stdio.h> int main() { char str[100]; int n=123; sprintf(str,"%d",n); printf("%s",str); return 0; }123
--------------------------------
Process exited after 0.1848 seconds with return value 0
引用 (C++)
对引用变量的操作就是对原变量的操作
只需要在函数的参数类型的后面加个&就可以了
#include<stdio.h> void change(int &x); int main() { int x=123; change(x); printf("%d",x); return 0; } void change(int &x) { x=1; }1
--------------------------------
Process exited after 0.1152 seconds with return value 0
详解:
点击打开链接http://www.cnblogs.com/Mr-xu/archive/2012/08/07/2626973.html
点击打开链接http://blog.csdn.net/webscaler/article/details/6577429
点击打开链接http://blog.csdn.net/xiao__tian__/article/details/51814617
浮点数的比较
因为浮点数有时会损失精度,所以如果一个数a落在了[b-eps,b+eps]的区间中时,就应当判断a==b成立
经验表明eps取1e-8是一个合适的数字
#include<math.h> const double eps=1e-8; #define Equ(a,b) (fabs((a)-(b))<(eps))π
π=arccos(-1)
#include<stdio.h> #include<math.h> int main() { printf("%f",acos(-1.0)); return 0; }3.141593
--------------------------------
Process exited after 0.08363 seconds with return value 0
多点测试
while(scanf("%d",&n)!=EOF) { } while(scanf("%s",str)!=EOF) { } while(gets(str)!=NULL) { } while(n--) //n组测试样例 { }在多组测试中,每一次的循环都要重置一下变量和数组,否则在下一组数据来临的时候变量和数组就不是初始状态了,重置数组一般使用memset函数或fill函数
摘自《算法笔记》胡凡 曾磊 主编
相关文章推荐
- [置顶] Java基础知识学习总结链接
- [置顶] halcon基础知识
- [置顶] C++基础知识汇总
- [置顶] Web前端 基础知识总结(Javascript篇)
- [置顶] 蓝牙基础知识进阶——Physical channel
- [置顶] Unity中关于图形学的基础知识—矩阵(二)
- [置顶] 反射基础知识
- [置顶] Android Multimedia框架总结(十七)音频开发基础知识
- [置顶] java script基础知识
- [置顶] java基础知识
- [置顶] 机器学习面试基础知识 & 扩展-01
- [置顶] unity中关于图形学基础知识—矩阵与转换(三)
- [置顶] javase基础知识总结
- [置顶] 知识总结之 插件化基础 java反射与代理
- [置顶] 基础知识整理之Java基础知识点梳理(详细)
- [置顶] OpenCV学完基础知识不知道做什么?!我不相信这是真的
- [置顶] unity中关于图形学的基础知识(一)
- [置顶] unity关于图形学的基础知识-3D矩阵的变换(四)
- [置顶] unity关于图形学基础知识(五)
- [置顶] 知识总结之 插件化基础ClassLoader