北邮OJ常见问题1

preview
需积分: 0 0 下载量 133 浏览量 更新于2022-08-03 1 收藏 229KB PDF 举报
【北邮OJ常见问题详解】 1. **程序的输入输出方式** 在北邮OJ平台上,程序的输入应当通过标准输入流(stdio)获取,即使用C语言中的`scanf`或C++中的`cin`。输出则应通过标准输出流(stdout)完成,如C的`printf`和C++的`cout`。避免使用文件操作,因为这可能导致运行时错误或答案错误。在C++中,`cin`和`cout`虽然易于使用,但相对于`scanf`和`printf`,它们的效率较低,可能导致时间超限错误(Time Limit Exceed)特别是在处理大量输入和输出时。 2. **编译器的选择** 北邮OJ支持三种编程语言环境:GNU C 4.6.3(GCC)、GNU C++ 4.6.3(G++)以及Java (OpenJDK 1.6.0_27)。使用时,需遵循特定的编译命令。例如,C语言代码可以这样编译: ``` gcc -o dest source_code.c -DONLINE-JUDGE -lm -std=c99 ``` C++代码编译: ``` g++ -o dest source_code.c -DONLINE-JUDGE ``` Java代码编译: ``` javac Main.java -d . ``` 3. **程序评判过程** 提交的代码首先会被保存,然后根据选择的语言进行编译。编译失败会返回编译错误。编译成功后,生成的可执行文件会被用来处理标准输入数据并生成输出文件。在此过程中,程序如果出现运行时错误、超时或输出超过限制,会得到相应的错误反馈。输出文件与正确答案进行比对,一致则通过,否则返回错误信息。 **注意**:处理64位整数时,C++中使用`long long`类型,输入输出需配合`lld`。例如: ```cpp long long a, b; scanf("%lld%lld", &a, &b); printf("%lld\n", a + b); ``` 4. **Judge返回的评价含义** - **等待评测(Pending)**:代码正在等待评判。 - **通过(Accepted)**:恭喜,程序正确无误。 - **格式错误(Presentation Error)**:结果正确但输出格式不匹配,可能多输出了空格或换行等。 对于C和C++,可以参考以下基本的A+B问题的解决方案: C语言: ```c #include <stdio.h> int main() { int a, b; scanf("%d%d", &a, &b); printf("%d\n", a + b); return 0; } ``` C++语言: ```cpp #include <iostream> using namespace std; int main() { int a, b; cin >> a >> b; cout << a + b << endl; return 0; } ``` Java语言: ```java import java.util.*; public class Main { public static void main(String args[]) { Scanner in = new Scanner(System.in); int a = in.nextInt(); int b = in.nextInt(); System.out.println(a + b); } } ``` 在编写程序时,确保遵循这些规范,以避免因不合规操作导致的运行时错误。
身份认证 购VIP最低享 7 折!
30元优惠券