我們在做oj題的時候經常遇到多組輸入,執行到檔案結束
常見的c語言寫法是這樣
while(scanf("%d", &n) != eof)
或者這樣
while(~scanf("%d", &n))
這樣似乎是不是太「繁瑣」了呢
如果使用c++,則**是這樣子
while(cin >> n)
看上去是不是清爽了很多呢
那麼,它的原理是什麼呢?
cin >> n
此表示式從標準輸入讀取乙個數,將其儲存在n裡,輸入運算子(>>)返回其左側物件,在這裡是cin,因此,此迴圈實際上檢測的是cin
當我們使用乙個istream物件作為條件時,其效果是檢測流的狀態。如果流是有效的,即流未遇到錯誤。當遇到檔案結束符,或遇到乙個無效輸入,istream物件的狀態會變為無效。處於無效狀態的istream物件會使條件變為假。
因此,我們的while迴圈會一直執行到遇到檔案結束(或無效輸入)。
注意:使用c++的輸入,所用時間會比scanf()慢一點兒,某些題如果輸入量比較大,可能會超時。
2018.12.30 11:49 寢室
如何輸入多組測試資料
problem description 輸入三個字元後,按各字元的ascii碼從小到大的順序輸出這三個字元。input 輸入資料有多組,每組佔一行,有三個字元組成,之間無空格。output 對於每組輸入資料,輸出一行,字元中間用乙個空格分開。sample input qwe asdzxc sampl...
多組資料的輸入方法(c語言)
例題 給定兩個整數a,b,求這兩個數之和 輸入 輸入資料有多行。每行資料中含有兩個整數a,b 0 a,b 109 輸出 對每行資料,輸出對應的a b的值。樣例輸入 123 500 60 80 70 90 樣例輸出 623140 160 實現 include intmain return0 在有些題目...
C語言中多組輸入EOF的用法
include 在這裡著重介紹 while scanf d a eof 的使用方法 也可以寫成while scanf d n 其中的 是取反的意思 這段 的功能是用來實現多組輸入 在不知道輸入組數的情況下,要是知道輸入組數就用for迴圈 以下面的 為例 輸入多組值,遇到 eof 就結束輸入 在 wi...