您的位置:首页 > 编程语言 > C语言/C++

C语言/ACM 零碎知识点及注意事项

2017-08-14 22:39 309 查看
1.不要在程序中加任意一个多余的getchar(),因为算法竞赛(如ACM)检测结果是自动、非常严谨的,输出多一个字符或少一个字符都不行。

2.在算法竞赛中,每行输出均应以回车符结束,包括最后一行。

3.const关键字表明它后面的未知量的值是不可以改变的,尽量用const关键字声明常数。如声明圆周率:const double PI =3.1415927或#define PI 3.1415927(宏定义)。

4.算法竞赛的题目应当是严密的,如果在比赛中发现题目有漏洞,应向相关人员询问,而尽量不要自己随意假定。

5.printf(“%03d\n”,m); %03d表示:输出的长度为3,当小于3时,左端补0,大于时原样输出;即输出两位数是0xx,三位数就是xxx。

printf(“%5d\n”,m);%5d表示:按照5位数打印,不足5位在前面补空格。

6.多数算法竞赛采用黑盒测试,即只考查程序解决问题的能力,而不关心它采用了什么方法。我们的目标是解决问题,而不是为了写程序而写程序,同时应保持简单(keep it simple and stupid),而不是自己创造条件去展示编程技巧。算法竞赛是在比谁能更好地解决问题,而不是在比谁写的程序看上去更高级。

7.程序中若有int a=1/0(或double a=1/0)会报错,因为除数不能为0;而double a=1.0/0.0;却不会报错,输出的答案是0,因为0.0 不等于 0,有些小数没有办法用二进制精确表示。

8.scanf(“%d%d”,&a,&b);输入完第一个值a之后,程序是以空格或回车键来判断是否开始进行下一个值b的输入。

9.C语言直接输出%d:printf(“%%d”);

直接输出\n :printf(“\n”);

10.同一优先级的运算符,运算次序由结合方向所决定。如&&和||结合方向是从左往右。

11.C语言中sin和cos的用法:头文件为math.h,double sin(double x)

double cos(double x),详情参考http://blog.csdn.net/white_idiot/article/details/52431394

12在观察无法找出错误时,可以用输出中间结果的方法查找错误。

13.记住:变量在赋值之前的值是不确定的。因此在使用该变量前(如将要对该变量进行加减乘除运算),一定要定义!!!否则会出来很奇怪的数…

定义的方法(如对max和min):一般先读取第一个数x,然后令max=min=x。

14.可以用IDE(如Code::Blocks)或者文本界面的gdb进行编码、测试和调试的演示。

15.ACM比赛提交代码时,不需要用到fopen,fopen是作为测试用的。

16.浮点运算可能存在误差。在进行浮点数比较时,应考虑到浮点误差。

17.程序写完之后不要忘记测试。一个看上去正确的程序可能隐含错误。

18.要计算只包含加法、减法和乘法的整数表达式除以正整数n的余数,可以在每步计算之后对n取余,结果不变。

19.用编译选项-Wall编译程序时,会给出很多(但不是所有)警告信息,以帮助程序员查错;但并不能解决所有问题,因为有些错误(不是期望的功能)是合法的。

20.要在C++程序中使用C语言头文件,请去掉扩展名.h,并在最前面加上小写字母c;如stdio.h在C++中的新名字是cstdio;但是也可以在C++中继续使用stdio.h,C++中保留着C的很多常用头文件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: