ACM编程竞赛在线判断错误指南

需积分: 9 3 下载量 167 浏览量 更新于2024-09-20 收藏 45KB DOC 举报
"ACM_OJ错误提示文档是关于ACM在线判题系统中的常见错误提示及解决方法的文档,旨在帮助程序员理解并修正代码中的问题。文档涉及到C/C++和Pascal两种语言的规范差异,以及如何在在线环境下处理特定问题。" 在ACM编程竞赛或使用在线判题系统(Online Judge,如Nankai ACM OJ)时,经常会遇到编译或运行错误。以下是部分关键知识点: 1. ANSI C/C++ 标准: - main 函数的声明:ANSI 标准规定main函数应声明为`int main()`,而微软的Visual C++允许`void main()`,但建议使用`int main()`并在程序结束时返回0。 - for循环中的变量声明:避免在for循环内部声明变量,应提前声明,如`int i; for(i=0; i<10; i++) {}` - 不是ANSI标准的函数:例如`itoa`和`stricmp`,可以寻找替代方案,如使用标准库中的`printf`和`strcmp`。 - `sqrt`函数:确保传递给`sqrt`的参数是`double`类型,如`sqrt(double(x))`。 2. 使用64位数: - 在C/C++中,使用`long long`类型来表示64位整数,并在输出时使用`%lld`格式化字符串。 3. FreePascal与Turbo Pascal的差异: - FreePascal是32位跨平台编译器,而Turbo Pascal是16位Windows编译器。 - 函数重载:FreePascal支持函数重载,因此参数类型需严格匹配。 - 关键字冲突:`PROTECTED`, `PUBLIC`, `PUBLISHED`, `TRY`, `FINALLY`, `EXCEPT`, `RAISE`在FreePascal中是关键字,不能用于标识符名称。 为了在ACM比赛中顺利通过在线判题系统,了解这些标准和差异至关重要。对于C/C++,确保遵循ANSI标准,避免使用特定编译器的扩展特性。对于Pascal,特别是从Turbo Pascal迁移到FreePascal,要注意语法的兼容性和新特性。正确理解和应用这些知识点将有助于提高代码的兼容性和可运行性,减少因编译错误导致的困扰。