虽然每个coder都有自己的编码风格,但是ICPC毕竟是团队比赛,还是有必要遵守一些公认的代码规范,以便交流。
【头文件】
使用万能头文件
#include <bits/stdc++.h>
仅在POJ等不能使用的情况下例外;
【多组输入】
不用
while(scanf("%d",&a)!=EOF)
用
while(~scanf("%d",&a))
【换行】
使用K&R风格或Java风格 devc++的格式化选项里有,即不要用code::blocks默认的风格
int main()
{
int a,b;
while(~scanf("%d%d",&a,&b)){
printf("%lf\t%lf\t%lf\n",a/b,(double)(a/b),(double)a/b);
}
return 0;
}//K&R风格 除了主函数,左大括号不换行,右大括号换行
int main() {
int a,b;
while(~scanf("%d%d",&a,&b)) {
printf("%lf\t%lf\t%lf\n",a/b,(double)(a/b),(double)a/b);
}
return 0;
}//Java风格,所有的左大括号不换行,右大括号换行
int main()
{
int a,b;
while(~scanf("%d%d",&a,&b))
{
printf("%lf\t%lf\t%lf\n",a/b,(double)(a/b),(double)a/b);
}
return 0;
}//Allman风格
我们可以看到Java风格的换行方式最为干净,冗余行最少,且右括号直接对齐相应的循环或条件语句,而且《算法竞赛入门到进阶》也是这样推荐的,大佬们也都采用了K&R或Java的对齐方式,如果不习惯请务必适应。至少我写是一定会用Java的换行方式的。 CodeBlocks修改默认格式化方法: Setting->Editor->Source Formatter->style->Bracket style 修改成Java 设置->编辑器->源码格式工具->样式->括号风格
【宏】
不要用宏,const int 和typedef可以代替。 不管是宏常量还是宏函数都容易出问题。
【变量定义】
在离变量最近使用的地方定义。
for(int i=0;i<5;i++)
a[i]=i*i;