One day
1.c的格式化输入输出:
printf()和scanf()函数可以较好实现格式化输入输出,例子如下:
printf("%3d",3); //结果为__3 (_为空格)
printf("%03d%02d",5,3); //结果为 5__3
printf("%.2lf",3.14156);//结果为3.14
scanf("%2d",&a);//当输入流为123时,a=12
scanf("[%2d]",&a);//当输入流为[123456][123]时,a=12
scanf("%d-%d-%d",&a,&b,&c);//当输入流为123-1-32时,a=123,b=1,c=32
更高级的还要限制输入字符集等功能,大家有兴趣可以百度
2.ACM常用变量类型:
int 32位整型变量,能表达数据范围为-2^31~2^31-1
char 8位整型变量,能表达数据范围为0~255,可表示整数或字符,字符以ASCII码形式存储,char数组可以用于存储字符串
double 64位浮点型变量,可表示浮点数
float 32位浮点型变量,可表示浮点数。!!!注意,一般情况请勿用,偶尔会因为一些未知原因导致结果错误,可完全用double代替
string 无限长度c++字符串变量,只能用cin输入,因其内置众多库函数,必要时刻可用于代替char数组,详见库函数介绍
如果我说在gcc下long和int的范围是一样大小的,你们别伤心,所以没必要用long,要就用long long
long long 64位整形变量,为了弥补int数据范围的不足,long long为gcc编译器(linux下)所支持的64位整形变量,范围是-2^64~2^64-1,定义格式为long long a;,输入格式为cin>>a;或者scanf("%lld",&a);输出类似。
__int64 同long long,不同点为VC6.0等windows下编译器不支持long long,而支持__int64,输入格式为scanf("%I64d",&a); (深大OJ用的是gcc编译器)
指针类型及自定义类类型有兴趣自己了解
3.编程注意事项
1)血的教训告诉我们,记得int main()和return 0;
2)不要用c++系统头文件的.h形式(iostream.h等)
3)要对数据范围心里有数,爆int用long long,爆long long换想法,实在不行就尝试高精度
4)codeblocks用的是Linux下编译器,VC6.0及VS各版本用的Windows下编译器,注意区分不同。我们OJ及大多数OJ是Linux下编译器,因此强力推荐codeblocks
5)printf及scanf的速度比cin,cout快,当输入(输出)数据很多的时候,请用scanf(printf),不然Time Case Limit,当然,全部都用c版本输入输出是一种很好的方案。
6)OJ的内存限制一般为65536KB,即指大概最多可开8000000左右的数组,大家在开数组时要有度,但勿吝啬,多开几十的数组是常见做法。
尽量不要用动态分配(new,malloc,calloc等),不是指不可以,但我们已经在用它们时得到过教训(各种Runtime Error)
大数组请定义为全局变量,因为一个函数中定义的数组大小是无法达到8000000这种数字的,一般为十万级
7)请不要把VC6.0中允许的错误写法使用到OJ上,唯有Compile Error,且尽少在循环体里定义数据。说的是这种:
for(int i=0;;) do something;
for(i=0;;) do something;//你们应该知道这行中的i为未定义
8)OJ的时间限制一般为1ms~10ms,意味着在程度运行时我们可以进行大约千万级次的循环,比如,若有四层for嵌套而每个for都100次的话,将是100*100*100*100,也将是超时Time Case Limit。
9)少用指针
4.常见库函数
math.h
sqrt(n) 求浮点数的平方根
pow(x,y) 求x的y次方
sin() cos() tan() asin() acos() atan() 求浮点数的三角函数,其中acos(-1.0)即PI的浮点值
log(x) 求x的ln
exp(x) 求e的x次方
log10(x) 求x的lg
fabs(x) 求浮点数x的绝对值
stdlib.h
abs(x) 求整型变量x的绝对值
string.h
strlen(s) 求char数组s[]的字符串长度
strcpy(x,y) 把字符串y拷贝为字符串x
strcmp(x,y) 按字典序比较x和y的大小,x小于y返回-1,x等于y返回0,x大于y返回1
algorithm
abs() 求x的绝对值
sort(a,a+n) 对数组a进行升序排序,n为数组长度
就那么多,其它的以后再了解。
随机推荐
- 用Javascript进行HTML转义(分享)
众所周知页面上的字符内容通常都需要进行HTML转义才能正确显示,尤其对于Input,Textarea提交的内容,更是要进行转义以防止javascript注入攻击. 通常的HTML转义主要是针对 ...
- 同一台电脑上安装两个tomcat服务器
1.下载免安装版tomcat,解压成tomcat1.tomcat2: 2.修改tomcat2中conf下server.xml文件如下: <Server port="8005" ...
- IOS UIColor 自定义颜色
使用 UIColor定义颜色 和 同 CIColor 与 CGColor 之间的联系.转换 1. 利用UIColor展现 #F6F6F6 这个传统的颜色 #F6F6F6 为一个 16 进制表示的RP ...
- 【转】 IOS,objective_C中用@interface和 @property 方式声明变量的区别
原文: http://blog.csdn.net/ganlijianstyle/article/details/7924446 1.在 @interface :NSObject{} 的括号中,当然N ...
- C#模拟POST提交表单(二)--HttpWebRequest以及HttpWebResponse
上次介绍了用WebClient的方式提交POST请求,这次,我继续来介绍用其它一种方式 HttpWebRequest以及HttpWebResponse 自认为与上次介绍的WebClient最大的不同之 ...
- OpenCart本地调试环境搭建
OpenCart简介: 免费开源网络版电子商务系统,是建立在线商务网站首选之一.有众多用户和开发基础,结合其丰富特性与模板插件,可最大化定制在线商店.(也就是用来方便开网店的) 本地调试准备: Fir ...
- Javascript的AMD规范
Javascript发展到今天,已经从一个小丑语言变成了不可替代的前端利器,已经脱离了低端的玩笑脚步,而转变为有规可依的强大语言. 本文主要讲述下如今被大力推广的AMD规范,为什么要AMD,什么场景是 ...
- String、StringBuffer、StringBuilder
也说String. String:不可变字符序列. StringBuffer:线程安全的可变字符序列. StringBuilder:StringBuffer的非线程安全实现,JDK1.5+. publ ...
- 关于点击空白关闭弹窗的js写法推荐?
$(document).mouseup(function(e){ var _con = $(' 目标区域 '); // 设置目标区域 ){ // Mark 1 some code... // 功能代码 ...
- 知识库总结mysql常用cmd命令
打开命令目录 打开D盘mysql目录 d: cd D:\Ampps\mysql\bin 常用操作 将mysql目录下bin目录中的mysql.exe放到C:\WINDOWS下,可以执行以下命令 连接: ...