基础知识(1)

基本数据类型的范围

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


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







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值