基础知识(1)

原创 2017年07月22日 18:15:56

基本数据类型的范围

整型 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函数


摘自《算法笔记》胡凡 曾磊 主编







版权声明:小白有写的不好不对的地方请指出

相关文章推荐

oracle教程1--数据库基础知识

1.相关术语1.表 即在数据库中存放数据用的数据表 2.视图 是数据库中的虚拟表,使用视图是为了方便信息查询 3.存储过程 是由sql语句和控制语句组成的语句块 4.触发器是特殊的存储过程 5.约束是...

Android NDK学习笔记1-基础知识篇

Android NDK(Native Development Kit )是一套工具集合,允许你用像C/C++语言那样实现应用程序的一部分。同时,Android NDK对于Android SDK只是个组...

c++基础知识总结1

  • 2015-08-04 11:35
  • 33KB
  • 下载

[1]进程基础知识

进程(progress)就是一个运行中的程序实例。线程(thread)是运行在进程中的一个逻辑控制流。它与进程的区别是,与其他线程共享地址空间。

信号链基础知识合辑(1-10)

  • 2014-11-11 10:52
  • 1.77MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)