• 歡迎訪問C語言網hnsaiyang.com 比賽欄每月有獎月賽!舉辦比賽聯系QQ:2045302297
  • 問題反饋、粉絲交流 QQ群327452739 藍橋杯訓練群:113766799 申請群時請備注排名里的昵稱
  • C語言研究中心 為您提供有圖、有料、解渴的C語言專題! 歡迎討論!

『ACM入門』藍橋杯ACM訓練系統基本輸入輸出教程

技術專題 CTO 55889次瀏覽 9個評論

在介紹訓練場的OJ系統之前,首先為大家介紹一下ACM:

ACM原代表美國計算機協會,因其舉辦的ICPC即國際大學生程序設計競賽而聞名全世界,此項賽事要求學生的在五小時內解決全英文問題,并在效率和速度以及代碼的審查上要求非常嚴格以至近乎苛刻,被譽為是計算機界的“奧林匹克”。在大學中,因其含金量、認可度等非常之高,故而在大學生名企就業、保研、留學等方面都有著極大的幫助。ACM也因其獨有的比賽趣味也在今天的高校中也得到了廣泛的推廣,許多大學生都為之著迷、甚至大學四年都為之獻身。足以說明ACM的魅力所在。

OJ簡介:

ACM比賽中主要以OJ(即Online Judge)判題為主,用來在線檢測程序的正確性。OJ采用后臺黑箱測試,測試數據非常全面,涵蓋各種特殊情況。并且在結果的比對上也不放過一個空格和回車,這就要求程序員要有非常嚴謹的思維。著名的OJ有POJ、HOJ、UVA等。

輕量級入門OJ? ACM訓練平臺:http://hnsaiyang.com

在各大OJ的ACM比賽賽題上,往往都會給出問題的描述(Description)、問題的輸入和輸出要求,并會給出幾組樣例數據。所以選手要在完全理解的基礎上至少通過了樣例數據才再提交代碼。

下面我們介紹幾種常見的輸入輸出格式。

 

A+B Ⅰ

這種輸入的典型題目就是A+Bhttp://hnsaiyang.com/oj/problem1085.html

此題只要求用戶求A+B的和,但此類題目往往說明測試數據有多組。則默認是到文件(后臺測試用例在文件里)末尾結束。我們則可以采用循環的方式不斷接收測試用例,并且每接收一組輸出一組(不必全部輸入再全部輸出,因為OJ只比對一次最后的結果)。

參考C代碼:

#include<stdio.h>
int main()
{
 int a,b;
 while(scanf(“%d%d”,&a,&b)==2) //利用scanf的返回值
 {
 printf(“%d\n”,a+b);
 }
 return 0;
}

A+BⅡ

依然是A+B,我們可以看一下這道題http://hnsaiyang.com/oj/problem1086.html

依然是求A+B,但它的輸入數據為:

2

1 5

10 20

輸出為:

6

30

 

此題相比第一道而言,會提前告訴你是幾組數據,第一行的2就表示有兩組數據。則此時我們可以考慮這樣寫:

#include<stdio.h>
int main()
{
 int n;
 int a,b;
 scanf("%d",&n);
 while(n--)
 {
 scanf("%d%d",&a,&b);
 printf("%d\n",a+b);
 }
 return 0;
}

A+B Ⅲ

繼續是A+B,不同的是題目中說明,有多組數據,但是以A和B都為0時結束,則此時,就要做判斷。不能依然輸出0。

http://hnsaiyang.com/oj/problem1087.html

參考答案:

#include<stdio.h>
int main()
{
 int a,b;
 while(scanf("%d%d",&a,&b)==2) 
 {
 if(a== 0 && b==0)
 break;
 printf("%d\n",a+b);
 }
 return 0;
}

A+B Ⅳ

題目描述:此類題目是求n個數的和,輸入為先輸入一個數組n,然后后面跟n個數字,求這n個數字的和。同樣有多組數據,當n=0時結束。題目鏈接http://hnsaiyang.com/oj/problem1088.html

樣例輸入:

4? 1 2 3 4

5 1 2 3 4 5

0

樣例輸出:

10

15

 

參考寫法:

#include<stdio.h>
int main()
{
 int n;
 int sum,temp;
 while(scanf("%d",&n) && n)
 {
 sum=0;
 while(n--)
 {
 scanf("%d",&temp);
 sum+=temp;
 }
 printf("%d\n",sum);
 }
 return 0;
}

總結:

常見的ACM的輸入輸出格式如這些。

多組數據可能還會用到EOF、NULL這些宏。比如scanf、getchar、gets的返回值。

萬變不離其宗,有些題目可能是這些格式的組合,亦或者是個別情況的變種,比如輸出格式要求的變化等等,就需要各位ACMer靈活多變了。

 

 

DJTU2012年退役Acmer

C語言研究中心(hnsaiyang.com)

C語言網提供「C語言、C++、算法競賽」在線課程,全部由資深研發工程師或ACM金牌大佬親授課,更科學、全面的課程體系,以在線視頻+在線評測的學習模式學習,學練同步,拒絕理論派,真正學會編程!還有獎學金等增值福利等你!

C語言網, 版權所有丨如未注明 , 均為原創丨本網站采用協議進行授權 , 轉載請注明『ACM入門』藍橋杯ACM訓練系統基本輸入輸出教程
喜歡 (404)
[jinyangH@aliyun.com]
分享 (0)
發表我的評論
取消評論
表情

Hi,您需要填寫昵稱和郵箱!

  • 昵稱 (必填)
  • 郵箱 (必填)
(9)個小伙伴在吐槽
  1. get 非常感謝
    追夢2017-04-24 12:06 回復
  2. 膜拜~
    菜籽油2017-04-27 17:14 回復
  3. very good!!很好~
    家家2017-08-20 18:47 回復
  4. 這個寫的是真的不錯!!!
    C之緣2018-07-06 23:48 回復
  5. 小白我還得努力啊 不懂的太多了
    00232018-07-20 17:19 回復
  6. 感謝,總結的很全面
    HuangLiang2019-01-11 21:09 回復
  7. 卡看不懂啊,沒學過得我來學c語言了
    疾影2019-04-06 13:28 回復
  8. 很不錯的
    白利軍2020-02-22 16:59 回復
  9. 這個c語言網做得很好,還有這么基礎的知識,案例豐富
    dd2020-10-23 09:31 回復