一、訓練環境
北京大學在線評測系統 POJ 網站地址 http://poj.org/ 點擊傳送
浙江大學在線評測系統 ZOJ 網站地址 https://zoj.pintia.cn/home 點擊傳送
杭州電子科技大學在線評選系統 HDOJ 網站地址 http://acm.hdu.edu.cn/ 點擊傳送
二、訓練語言
可以選擇C語言,C++,java等,【插一句,IOI(國際信息學奧林匹克競賽)和 NOI (全國青少年信息學奧林匹克競賽)的資料其實有很多事可以拿來用的】,這裏筆者比較建議使用C語言和C++。其中C++的STL可以直接拿來用,注意不用濫用STL,要合理的使用,注意使用STL的場合。
三、基本輸入方法
語言 | 標準輸入 | 標準輸出 |
C | scanf(“%d”,&n) | printf("%d",n) |
C++ | cin>>n | cout<<n |
Java | System.in | System.out |
四、一道簡單的題
OK,那麼接下來我們來用一道簡單的小題來說明在在線評測系統中提交代碼的輸入格式。這是通常情況下的處理方法,注意題目要求特殊的輸入時要注意。
題目簡單敘述:
做2個數的減法,如果第一個數大於第二個數進行減法,並輸出結果;如果第一個數小於第二個數那麼就返回NO。
輸入:
輸入有2行,每行有2個整數a,b,範圍1<=a,b<=9;
輸出:
如果第一個數大於第二個數,輸出結果。如果第一個數小於第二個數輸出NO。行末尾換行。
輸入樣例:
6 7
8 1
輸出樣例
NO
7
答案:
#include <iostream>
#include <cstdio>
int main(){
int a,b;
while(scanf("%d%d",&a,&b)!=EOF){
if(a<b){
printf("NO\n");
}else{
printf("%d\n",a-b);
}
}
return 0;
}
樣例輸出截圖如下
要注意因爲在線評測系統要對你的代碼進行黑盒測試,while(scanf("%d%d",&a,&b)!=EOF)表示只要文件還有IO的輸入,循環就可以繼續進行。一旦輸入介紹後scanf("%f",&a)函數的返回值就是EOF,於是while循環就結束了。EOF常被作爲文件結束的標誌。還有很多文件處理函數處錯誤後的返回值也是EOF,因此常被用來判斷調用一個函數是否成功。
要注意#include <cstdio>這個寫法,在C++代碼中,C語言的#include <stdio.h>頭文件改寫爲#include <cstdio>