不管小學複賽,仍是初中、高中的noip複賽,都必須注意這個問題。
若是在代碼中,書寫格式錯誤,或者寫了具體的文件路徑,測試成績必爲0分。
因此請參加複賽的同窗,必定要注意這個問題。不然作對了,還0分,太冤了。
以一個題目爲例。例子見:
http://cojs.tk/cogs/problem/problem.php?pid=1
加法問題
輸入文件:aplusb.in 輸出文件:aplusb.out
時間限制:1 s 內存限制:12 MB
這是一個經典的入門問題,經過此問題,你能夠學會如何使用該評測系統。
【問題描述】
如今有兩個實數,分別是A和B。請你從文件中讀取A和B,計算它們的和A+B,並把它輸出到文件中。(保留到整數)
【輸入格式】
第一行:一個實數A
第二行:一個實數B
【輸出格式】
第一行:一個整數C = A+B
【輸入樣例】
1
2
【輸出樣例】
3
1、Pascal
針對以上例子,提交的正確格式是:
php
1 program aplusb(input,output); 2 var a,b:real; 3 begin 4 Assign(input, 'aplusb.in'); Reset(input); //輸入文件與標準輸入流關聯,並重定向 5 Assign(output, 'aplusb.out'); Rewrite(output); //輸出文件與標準輸出流關聯,並重定向 6 // 7 readln(a); 8 readln(b); 9 writeln(a+b:0:0); 10 // 11 Close(input); Close(output); //最後別忘了關閉關聯(文件)。 12 end.
因此,在考試以前的半小時左右時間內,就能夠默寫以下代碼在記事本中,準備應用:
ide
1 program xxx(input,output); 2 var i,j:longint; 3 begin 4 //Assign(input, 'xxx.in'); Reset(input); 5 //Assign(output, 'xxx.out'); Rewrite(output); 6 // 7 //... 8 // 9 //Close(input); Close(output); 10 end.
而後在考試時,編寫代碼時,進行調試的時候,仍是鍵盤輸入,屏幕輸出。
編寫代碼,測試完成後,在提交時,把三處出現的「xxx」,修改成具體題目規定的名稱。
特別注意:輸入、輸出的文件名以前,不能寫上路徑。不然就是0分。
再把begin後的第1、二行,及end前的一行,以前的註釋符號「//」刪除掉。
而後再把文件保存在指定的目錄中。
2、C/C++
針對以上例子,提交的正確格式是:
測試
1 #include <stdio.h> 2 int main() 3 { 4 float i,j; 5 freopen("aplusb.in", "r", stdin); //輸入文件直接與標準輸入流關聯 6 freopen("aplusb.out", "w", stdout); //輸出文件直接與標準輸出流關聯 7 scanf("%f%f", &i, &j); //接下來,是對標準輸入、輸出流操做,就是說已經重定向 8 // 9 printf("%0.0lf\n", i+j); //因此沒必要對具體文件操做,不用在前面加f了 10 fclose(stdin); fclose(stdout); 11 }
固然還有其它格式,好比:
spa
1 #include<stdio.h> 2 int main() 3 { 4 float a,b; 5 FILE *f; 6 7 f=fopen("aplusb.in","r"); 8 fscanf(f,"%f%f",&a,&b); 9 fclose(f); 10 11 f=fopen("aplusb.out","wb"); 12 fprintf(f,"%0.0lf",a+b,"\n"); 13 fclose(f); 14 return 0; 15 }
又好比:3d
1 #include <stdio.h> 2 int main() 3 { 4 float i,j; 5 FILE *fp1, *fp2; //FILE 在stdio.h中有聲明 6 fp1 = fopen("aplusb.in","r"); //打開輸入文件,用來讀 7 fp2 = fopen("aplusb.out","w"); //打開輸出文件,用來寫 8 fscanf(fp1,"%f%f", &i, &j); //前面加f,從輸入文件中讀取 9 // 10 fprintf(fp2,"%0.0lf\n", i+j); //printf -> fprintf 在輸出文件中寫入 11 fclose(fp1); fclose(fp2); //這行聽說省掉也不要緊,不過最好不要省 12 return 0; 13 }
這樣都是能夠的。可是,是第一種最方便。
因此在開考以前,先默寫如下代碼在記事本中:調試
1 #include <stdio.h> 2 int main() 3 { 4 int i,j; 5 //freopen("xxx.in", "r", stdin); 6 //freopen("xxx.out", "w", stdout); 7 8 //... 9 10 //fclose(stdin); fclose(stdout); 11 }
而後調試代碼時,一如咱們平時作的那樣,鍵盤輸入,屏幕輸出。
調試完成後,提交前,把兩處「xxx」,修改成題目規定的文件名。
特別注意:輸入、輸出的文件名以前,不能寫上路徑。不然就是0分。
把相應的註釋符號「//」刪除掉。
再把文件保存到規定的目錄下。
每一年有菜鳥不清楚這個寫法而得0分的。但願同窗們注意這個格式問題。
那爲何不能寫上路徑?
由於在測試的時候,程序針對輸入文件讀取數據,再把輸出文件中的數據與標準的答案數據進行比較,從而產生分數。
你若是寫上路徑,那程序就從具體路徑中去讀取文件數據,而這個具體路徑中木有這個輸入文件,那你就慘了。。。code
Top
blog