回覆列表
-
1 # 波波桑
相關內容
- 網上有對於C++程式設計要避免使用cin、cout、fstream;而是使用scanf、printf、FILE *的說法, 請問是正確的嗎?
- 為何在C語言中的scanf()中要用到取地址符,而printf()中卻不用?
- 在c語言,能輸出double型變數x的值的函式,是getchar putchar scanf printf中的哪一個?
- getchar和putchar與scanf和printf的區別?
- c語言中scanf和printf都是輸出函式,兩者有什麼區別呢?
- C語言的中puts和printf的區別?
- C語言中用scanf需要輸入的地方按回車怎麼就退出了?
- 使用scanf函式進行輸入時,需要注意哪些問題?
- matlab中printf怎麼表示?
很簡單,就是兩個數相加,輸出加的結果。我們先來測試一下兩段程式碼的效能,再來分析慢還是快,為什麼用cin在寫上面這個問題的時候,總是TimeOut,而必須使用while(scanf("%s %s",&a,&b)!=EOF){}才行。a.cpp用C++寫的一個程式碼,很簡單,如下所示:
b.cpp,用C語言寫的一個實現同樣功能的程式碼,如下所示:
OK ,我們偽造1億條資料取測試一下,看看程式碼的效能如何,經過測試,我的機器配置如下
Linux 4.9.0-0.bpo.3-amd64 #1 SMP Debian 4.9.30-2+deb9u5~bpo8+1 (2017-09-28) x86_64 GNU/Linuxscanf和printf組合執行的時間是33秒,而cin和cout的執行時間是230秒。可想而知,效能差距是多大啊。
一般來說,在ACM比賽中,我們都會建議用scanf,而不用cin,因為cin是C++程式語言中的標準輸入流物件,即istream類的物件。cin主要用於從標準輸入讀取資料,這裡的標準輸入,指的是終端的鍵盤。