信息学奥赛一本通(C++版)在线评测系统

本网站由成都石室中学、福建长乐一中信奥教练联合呈现。题库教师群:307432527,仅供教师加入
用户:
  密码:
  注册新用户
为网站的持续发展,本网站开通了捐赠支付宝帐号,详情请点击“关于“选项。 教师频道的功能开通了!!!

如何避免由于编译器差别带来的错误

1、判题系统使用的是G++编译器,和普通使用的TC,VC都有所不同,建议大家使用Dev C++作为IDE,或者用TC和VC写代码,提交前使用Dev C++编译,预防编译错误。

提交C语言代码最好使用G++,G++兼容C和C++。C的代码可以用GCC也可用G++提交,而C++的代码不能够用GCC提交,只能用G++。

2、G++包含库的时候不要使用iostream.h,应该使用<iosteam>

有些常用的函数所在的库会被VC自动包含,但是不会被G++包含。

例如memset,strlen,strstr等和字符串处理相关的函数在库<cstring>中;abs在<cstdlib>中;fabs,sin,sqrt等数学函数在<cmath>中

为了避免CE,大家可以索性一次性把所有可能用到的库都给包含上。

C++注意要使用using namespace std;

3、关于整数,在G++下,long和int是完全一样的

4、浮点数:使用double以减小误差,格式控制字符串是"%lf"(不要使用float)。浮点数的相等不能直接用==来判断,需要使用实数判等。

5、标识符,G++中有一些在VC中没有的保留字,比如and,or,not等等,使用这些保留字作为标识符会产生CE。

6、对于输入输出,建议不要使用cin和cout,这种输入输出方式会比较慢,在数据量大的时候容易引起超时。

7、关于main函数,定义一定要是int型,并记得加上return 0。

int main(){... return 0; }

8、当使用类似于for (int i=0;i<n;i++)这种形式对循环变量进行定义时,注意循环变量的作用域只在这个循环内。

9、输入法在敲代码和提交代码的时候一定要确保关闭,代码中(除了注释部分)有全角字符会引起CE,注释建议使用英文。

10、使用STL的同学请注意例如下面的声明是会引起CE的

vector<vector<int>> adj; 应该改为 vector<vector<int> > adj;

连续两个左右箭头间要一个空格。


本题库与《信息学奥赛一本通(C++版)》(科学技术文献出版社)配套,版权及相关事宜请与本书作者联系,本网站不作解答。
本网站属公益、非盈利性质,不涉及与书相关的商业活动,后期可能适当收取费用以支持网站的运行维护。
目前因个人编写水平有限,网站维护、网站安全方面及部分功能的开发尚不成熟,如遇疑问,请通过版主信箱联系。
感谢成都石室中学Wuvin、Qizy、Xehoth三位同学对本网站的支持,特别鸣谢北京师范大学ACM前校队易超、唐巧、洪涛同学。
版主信箱:ybt_mail@126.com