ACM入門之輸入輸出

2021-06-04 15:43:17 字數 3530 閱讀 6184

#include  < stdio.h >

int main() 

在開始做

acm時,會面臨乙個輸入輸出資料的問題,

acm裡的輸入輸出資料和平時寫的程式不大一樣。下面詳解

acm有關輸入輸出的問題。

一、輸入: 1

、只有一組測試資料,這時候是最簡單的了,請看題目

sdutoj1000。

c語言**:

#include  < stdio.h >

int main() 

c++語言**:

#include   < iostream >

using namespace std;

int main()

2、有多組測試資料,直到讀至輸入檔案結尾為止,這時需要用到

while(scanf("%d",&n)!=eof)

或while (cin>>n)

,請看題目

sdutoj1010。

c語言**:

#include < stdio.h >

int main()    

說明:scanf

函式返回值就是讀出的變數個數,如:

scanf( 「%d %d」, &a, &b );

如果只有乙個整數輸入,返回值是

1,如果有兩個整數輸入,返回值是

2,如果乙個都沒有,則返回值是-1。

eof是乙個預定義的常量,等於-1。

c++語言**:

#include < iostream >   

using namespace std;

int main()

3、在開始的時候輸入乙個

n,接下來是

n組資料,請看題目

sdutoj1011。

c語言**:

#include

< stdio.h >

int main()

return 0; }

或者#include

< stdio.h >

int main()

return 0; }

c++**:

#include

< iostream >  

using namespace std;

int main()

return 0; }

4、輸入不說明有多少組資料

,但以某個特殊輸入為結束標誌。請看題目

sdutoj1012

,這個題目是以

0 0 

代表輸入結束。 c

語言**:

#include

< stdio.h >

int main()

c++語言**:

#include

< iostream >  

using namespace std;

int main()

return 0; }

5、還有一種是前幾種的組合,請看題目

sdutoj1013。

c語言**:

#include

< stdio.h >

int main()

printf("%d\n",sum); }

return 0; }

c++語言**:

#include

< iostream >  

using namespace std;

int main()

cout << sum << endl;}

return 0; }

6、輸入字串。  

輸入是一整行的字串的,c語法:

char buf[20];

gets(buf);

c++語法:

如果用string buf;來儲存:

getline( cin , buf );

如果用char buf[ 255 ]; 來儲存:

cin.getline( buf, 255 );

scanf(「 %s%s」,str1,str2),在多個字串之間用乙個或多個空格分隔;

若使用gets函式,應為gets(str1); gets(str2); 字串之間用回車符作分隔。

通常情況下,接受短字元用scanf函式,接受長字元用gets函式。

而getchar函式每次只接受乙個字元,經常c=getchar()這樣來使用。

getline 是乙個函式,它可以接受使用者的輸入的字元,直到已達指定個數,或者使用者輸入了特定的字元。它的函式宣告形式(函式原型)如下:

istream& getline(char line, int size, char endchar = '\n');

不用管它的返回型別,來關心它的三個引數:

char line: 就是乙個字元陣列,使用者輸入的內容將存入在該陣列內。

int size : 最多接受幾個字元?使用者超過size的輸入都將不被接受。

char endchar :當使用者輸入endchar指定的字元時,自動結束。預設是回車符。

結合後兩個引數,getline可以方便地實現: 使用者最多輸入指定個數的字元,如果超過,則僅指定個數的前面字元有效,如果沒有超過,則使用者可以通過回車來結束輸入。

char name[4];cin.getline(name,4,'\n');

由於 endchar 預設已經是 '\n',所以後面那行也可以寫成:

cin.getline(name,4);

最後需要說明的是,c++的輸入輸出流用起來比較方便,但速度比c要慢得多。在輸入輸出量巨大時,用c++很可能超時,應採用c的輸入輸出。

二、輸出:

輸出有不同的格式要求,不注意的話經常會出現

「presentation error」

,而且pc2

很多時候還判斷不出來輸出格式錯誤,就簡單的判為

"wrong answer",

所以輸出格式一定要注意。

1、一組輸出接著一組輸出,中間沒有空行,這也是最簡單的,請看題目

sdutoj1010。c

語言**:

#include < stdio.h >

int main()   //

把main

函式定義成

int型別 

每輸出一組結果換行就可以了。

2、一組接著一組,每一組後面有一空行。請看

sdutoj1016

c語言**:

#include

< stdio.h >

int main()

每輸出一組結果後輸出兩個換行就可以了。

3、一組接著一組,每兩組之間有乙個空行,注意與前一種區分開,請看題目

sdutoj1017

#include

< stdio.h >

int main()

printf("%d\n",sum);

if (i != n-1)

printf("\n"); }

return 0; }

判斷是否到達最後一組測試資料了,如果不是最後一組測試資料就多輸出乙個換行。

ACM輸入輸出之python

python的輸入數野生字串,需要自己轉型,常用的轉型函式有 strip 將兩端的空白字元去掉,返回str slipt 將字串用空白字元分開,返回 str map 把list裡面的值對映到指定型別,返回 type isspace 是否用空行組成 eof用來抓異常 輸出加 不換行 python3不能用...

ACM錄 之 輸入輸出。

簡單介紹一下acm裡面的輸入輸出。主要說c 的輸入輸出 其實其他的我不會。c 裡面有輸入輸出流,也就是cin和cout,用起來也算是比較方便吧。但是,acmer好像不怎麼用這個,大都用scanf,printf這兩個不是很方便的c語言遺留輸入輸出函式,因為。大家都用的cin cout逼格太低了,是吧。...

acm 輸入輸出總結

資料的輸入格式影響判斷迴圈終止的方式,迴圈判定發生在各組資料之間的輸入過程中和組內單個資料的輸入過程中,常見的資料輸入格式有三種 給出輸入規模 首先,輸入乙個整數n,n為輸入規模 然後,輸入n組資料。以特定輸入標誌結束 最後一組輸入為題目中指定的一組特定輸入,標誌輸入的結束。這組輸入一般為一組無意義...